Statistics
| Branch: | Tag: | Revision:

root / mkinstalldirs @ 4012ec30

History | View | Annotate | Download (1.94 KB)

1
#! /bin/sh
2
# mkinstalldirs --- make directory hierarchy
3
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
4
# Created: 1993-05-16
5
# Public domain
6

    
7
errstatus=0
8
dirmode=""
9

    
10
usage="\
11
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
12

    
13
# process command line arguments
14
while test $# -gt 0 ; do
15
  case $1 in
16
    -h | --help | --h*)         # -h for help
17
      echo "$usage" 1>&2
18
      exit 0
19
      ;;
20
    -m)                         # -m PERM arg
21
      shift
22
      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
23
      dirmode=$1
24
      shift
25
      ;;
26
    --)                         # stop option processing
27
      shift
28
      break
29
      ;;
30
    -*)                         # unknown option
31
      echo "$usage" 1>&2
32
      exit 1
33
      ;;
34
    *)                          # first non-opt arg
35
      break
36
      ;;
37
  esac
38
done
39

    
40
for file
41
do
42
  if test -d "$file"; then
43
    shift
44
  else
45
    break
46
  fi
47
done
48

    
49
case $# in
50
  0) exit 0 ;;
51
esac
52

    
53
case $dirmode in
54
  '')
55
    if mkdir -p -- . 2>/dev/null; then
56
      echo "mkdir -p -- $*"
57
      exec mkdir -p -- "$@"
58
    fi
59
    ;;
60
  *)
61
    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
62
      echo "mkdir -m $dirmode -p -- $*"
63
      exec mkdir -m "$dirmode" -p -- "$@"
64
    fi
65
    ;;
66
esac
67

    
68
for file
69
do
70
  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
71
  shift
72

    
73
  pathcomp=
74
  for d
75
  do
76
    pathcomp="$pathcomp$d"
77
    case $pathcomp in
78
      -*) pathcomp=./$pathcomp ;;
79
    esac
80

    
81
    if test ! -d "$pathcomp"; then
82
      echo "mkdir $pathcomp"
83

    
84
      mkdir "$pathcomp" || lasterr=$?
85

    
86
      if test ! -d "$pathcomp"; then
87
  	errstatus=$lasterr
88
      else
89
  	if test ! -z "$dirmode"; then
90
	  echo "chmod $dirmode $pathcomp"
91
    	  lasterr=""
92
  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
93

    
94
  	  if test ! -z "$lasterr"; then
95
  	    errstatus=$lasterr
96
  	  fi
97
  	fi
98
      fi
99
    fi
100

    
101
    pathcomp="$pathcomp/"
102
  done
103
done
104

    
105
exit $errstatus
106

    
107
# Local Variables:
108
# mode: shell-script
109
# sh-indentation: 2
110
# End:
111
# mkinstalldirs ends here