diff options
Diffstat (limited to 'xdelta1/mkinstalldirs')
-rwxr-xr-x | xdelta1/mkinstalldirs | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/xdelta1/mkinstalldirs b/xdelta1/mkinstalldirs new file mode 100755 index 0000000..8ab885e --- /dev/null +++ b/xdelta1/mkinstalldirs | |||
@@ -0,0 +1,99 @@ | |||
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; exit 0 ;; | ||
18 | -m ) # -m PERM arg | ||
19 | shift | ||
20 | test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } | ||
21 | dirmode="${1}" | ||
22 | shift ;; | ||
23 | -- ) shift; break ;; # stop option processing | ||
24 | -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option | ||
25 | * ) break ;; # first non-opt arg | ||
26 | esac | ||
27 | done | ||
28 | |||
29 | for file | ||
30 | do | ||
31 | if test -d "$file"; then | ||
32 | shift | ||
33 | else | ||
34 | break | ||
35 | fi | ||
36 | done | ||
37 | |||
38 | case $# in | ||
39 | 0) exit 0 ;; | ||
40 | esac | ||
41 | |||
42 | case $dirmode in | ||
43 | '') | ||
44 | if mkdir -p -- . 2>/dev/null; then | ||
45 | echo "mkdir -p -- $*" | ||
46 | exec mkdir -p -- "$@" | ||
47 | fi ;; | ||
48 | *) | ||
49 | if mkdir -m "$dirmode" -p -- . 2>/dev/null; then | ||
50 | echo "mkdir -m $dirmode -p -- $*" | ||
51 | exec mkdir -m "$dirmode" -p -- "$@" | ||
52 | fi ;; | ||
53 | esac | ||
54 | |||
55 | for file | ||
56 | do | ||
57 | set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` | ||
58 | shift | ||
59 | |||
60 | pathcomp= | ||
61 | for d | ||
62 | do | ||
63 | pathcomp="$pathcomp$d" | ||
64 | case "$pathcomp" in | ||
65 | -* ) pathcomp=./$pathcomp ;; | ||
66 | esac | ||
67 | |||
68 | if test ! -d "$pathcomp"; then | ||
69 | echo "mkdir $pathcomp" | ||
70 | |||
71 | mkdir "$pathcomp" || lasterr=$? | ||
72 | |||
73 | if test ! -d "$pathcomp"; then | ||
74 | errstatus=$lasterr | ||
75 | else | ||
76 | if test ! -z "$dirmode"; then | ||
77 | echo "chmod $dirmode $pathcomp" | ||
78 | |||
79 | lasterr="" | ||
80 | chmod "$dirmode" "$pathcomp" || lasterr=$? | ||
81 | |||
82 | if test ! -z "$lasterr"; then | ||
83 | errstatus=$lasterr | ||
84 | fi | ||
85 | fi | ||
86 | fi | ||
87 | fi | ||
88 | |||
89 | pathcomp="$pathcomp/" | ||
90 | done | ||
91 | done | ||
92 | |||
93 | exit $errstatus | ||
94 | |||
95 | # Local Variables: | ||
96 | # mode: shell-script | ||
97 | # sh-indentation: 3 | ||
98 | # End: | ||
99 | # mkinstalldirs ends here | ||