Statistics
| Revision:

root / mkinstalldirs @ 2197

History | View | Annotate | Download (1.9 kB)

1 1 hiro
#! /bin/sh
2 1 hiro
# mkinstalldirs --- make directory hierarchy
3 1 hiro
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
4 1 hiro
# Created: 1993-05-16
5 1 hiro
# Public domain
6 1 hiro
7 1 hiro
errstatus=0
8 1 hiro
dirmode=""
9 1 hiro
10 1 hiro
usage="\
11 1 hiro
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
12 1 hiro
13 1 hiro
# process command line arguments
14 1 hiro
while test $# -gt 0 ; do
15 1 hiro
  case $1 in
16 1 hiro
    -h | --help | --h*)         # -h for help
17 1 hiro
      echo "$usage" 1>&2
18 1 hiro
      exit 0
19 1 hiro
      ;;
20 1 hiro
    -m)                         # -m PERM arg
21 1 hiro
      shift
22 1 hiro
      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
23 1 hiro
      dirmode=$1
24 1 hiro
      shift
25 1 hiro
      ;;
26 1 hiro
    --)                         # stop option processing
27 1 hiro
      shift
28 1 hiro
      break
29 1 hiro
      ;;
30 1 hiro
    -*)                         # unknown option
31 1 hiro
      echo "$usage" 1>&2
32 1 hiro
      exit 1
33 1 hiro
      ;;
34 1 hiro
    *)                          # first non-opt arg
35 1 hiro
      break
36 1 hiro
      ;;
37 1 hiro
  esac
38 1 hiro
done
39 1 hiro
40 1 hiro
for file
41 1 hiro
do
42 1 hiro
  if test -d "$file"; then
43 1 hiro
    shift
44 1 hiro
  else
45 1 hiro
    break
46 1 hiro
  fi
47 1 hiro
done
48 1 hiro
49 1 hiro
case $# in
50 1 hiro
  0) exit 0 ;;
51 1 hiro
esac
52 1 hiro
53 1 hiro
case $dirmode in
54 1 hiro
  '')
55 1 hiro
    if mkdir -p -- . 2>/dev/null; then
56 1 hiro
      echo "mkdir -p -- $*"
57 1 hiro
      exec mkdir -p -- "$@"
58 1 hiro
    fi
59 1 hiro
    ;;
60 1 hiro
  *)
61 1 hiro
    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
62 1 hiro
      echo "mkdir -m $dirmode -p -- $*"
63 1 hiro
      exec mkdir -m "$dirmode" -p -- "$@"
64 1 hiro
    fi
65 1 hiro
    ;;
66 1 hiro
esac
67 1 hiro
68 1 hiro
for file
69 1 hiro
do
70 1 hiro
  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
71 1 hiro
  shift
72 1 hiro
73 1 hiro
  pathcomp=
74 1 hiro
  for d
75 1 hiro
  do
76 1 hiro
    pathcomp="$pathcomp$d"
77 1 hiro
    case $pathcomp in
78 1 hiro
      -*) pathcomp=./$pathcomp ;;
79 1 hiro
    esac
80 1 hiro
81 1 hiro
    if test ! -d "$pathcomp"; then
82 1 hiro
      echo "mkdir $pathcomp"
83 1 hiro
84 1 hiro
      mkdir "$pathcomp" || lasterr=$?
85 1 hiro
86 1 hiro
      if test ! -d "$pathcomp"; then
87 1 hiro
  	errstatus=$lasterr
88 1 hiro
      else
89 1 hiro
  	if test ! -z "$dirmode"; then
90 1 hiro
	  echo "chmod $dirmode $pathcomp"
91 1 hiro
    	  lasterr=""
92 1 hiro
  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
93 1 hiro
94 1 hiro
  	  if test ! -z "$lasterr"; then
95 1 hiro
  	    errstatus=$lasterr
96 1 hiro
  	  fi
97 1 hiro
  	fi
98 1 hiro
      fi
99 1 hiro
    fi
100 1 hiro
101 1 hiro
    pathcomp="$pathcomp/"
102 1 hiro
  done
103 1 hiro
done
104 1 hiro
105 1 hiro
exit $errstatus
106 1 hiro
107 1 hiro
# Local Variables:
108 1 hiro
# mode: shell-script
109 1 hiro
# sh-indentation: 2
110 1 hiro
# End:
111 1 hiro
# mkinstalldirs ends here