diff options
Diffstat (limited to 'mkinstalldirs')
-rw-r--r-- | mkinstalldirs | 71 |
1 files changed, 16 insertions, 55 deletions
diff --git a/mkinstalldirs b/mkinstalldirs index 5d26a485..d2d5f21b 100644 --- a/mkinstalldirs +++ b/mkinstalldirs | |||
@@ -1,33 +1,21 @@ | |||
1 | #! /bin/sh | 1 | #! /bin/sh |
2 | # mkinstalldirs --- make directory hierarchy | 2 | # mkinstalldirs --- make directory hierarchy |
3 | 3 | # Author: Noah Friedman <friedman@prep.ai.mit.edu> | |
4 | scriptversion=2005-02-02.21 | ||
5 | |||
6 | # Original author: Noah Friedman <friedman@prep.ai.mit.edu> | ||
7 | # Created: 1993-05-16 | 4 | # Created: 1993-05-16 |
8 | # Public domain. | 5 | # Public domain |
9 | # | ||
10 | # This file is maintained in Automake, please report | ||
11 | # bugs to <bug-automake@gnu.org> or send patches to | ||
12 | # <automake-patches@gnu.org>. | ||
13 | 6 | ||
14 | errstatus=0 | 7 | errstatus=0 |
15 | dirmode="" | 8 | dirmode="" |
16 | 9 | ||
17 | usage="\ | 10 | usage="\ |
18 | Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... | 11 | Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." |
19 | |||
20 | Create each directory DIR (with mode MODE, if specified), including all | ||
21 | leading file name components. | ||
22 | |||
23 | Report bugs to <bug-automake@gnu.org>." | ||
24 | 12 | ||
25 | # process command line arguments | 13 | # process command line arguments |
26 | while test $# -gt 0 ; do | 14 | while test $# -gt 0 ; do |
27 | case $1 in | 15 | case $1 in |
28 | -h | --help | --h*) # -h for help | 16 | -h | --help | --h*) # -h for help |
29 | echo "$usage" | 17 | echo "$usage" 1>&2 |
30 | exit $? | 18 | exit 0 |
31 | ;; | 19 | ;; |
32 | -m) # -m PERM arg | 20 | -m) # -m PERM arg |
33 | shift | 21 | shift |
@@ -35,10 +23,6 @@ while test $# -gt 0 ; do | |||
35 | dirmode=$1 | 23 | dirmode=$1 |
36 | shift | 24 | shift |
37 | ;; | 25 | ;; |
38 | --version) | ||
39 | echo "$0 $scriptversion" | ||
40 | exit $? | ||
41 | ;; | ||
42 | --) # stop option processing | 26 | --) # stop option processing |
43 | shift | 27 | shift |
44 | break | 28 | break |
@@ -66,37 +50,17 @@ case $# in | |||
66 | 0) exit 0 ;; | 50 | 0) exit 0 ;; |
67 | esac | 51 | esac |
68 | 52 | ||
69 | # Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and | ||
70 | # mkdir -p a/c at the same time, both will detect that a is missing, | ||
71 | # one will create a, then the other will try to create a and die with | ||
72 | # a "File exists" error. This is a problem when calling mkinstalldirs | ||
73 | # from a parallel make. We use --version in the probe to restrict | ||
74 | # ourselves to GNU mkdir, which is thread-safe. | ||
75 | case $dirmode in | 53 | case $dirmode in |
76 | '') | 54 | '') |
77 | if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then | 55 | if mkdir -p -- . 2>/dev/null; then |
78 | echo "mkdir -p -- $*" | 56 | echo "mkdir -p -- $*" |
79 | exec mkdir -p -- "$@" | 57 | exec mkdir -p -- "$@" |
80 | else | ||
81 | # On NextStep and OpenStep, the `mkdir' command does not | ||
82 | # recognize any option. It will interpret all options as | ||
83 | # directories to create, and then abort because `.' already | ||
84 | # exists. | ||
85 | test -d ./-p && rmdir ./-p | ||
86 | test -d ./--version && rmdir ./--version | ||
87 | fi | 58 | fi |
88 | ;; | 59 | ;; |
89 | *) | 60 | *) |
90 | if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && | 61 | if mkdir -m "$dirmode" -p -- . 2>/dev/null; then |
91 | test ! -d ./--version; then | ||
92 | echo "mkdir -m $dirmode -p -- $*" | 62 | echo "mkdir -m $dirmode -p -- $*" |
93 | exec mkdir -m "$dirmode" -p -- "$@" | 63 | exec mkdir -m "$dirmode" -p -- "$@" |
94 | else | ||
95 | # Clean up after NextStep and OpenStep mkdir. | ||
96 | for d in ./-m ./-p ./--version "./$dirmode"; | ||
97 | do | ||
98 | test -d $d && rmdir $d | ||
99 | done | ||
100 | fi | 64 | fi |
101 | ;; | 65 | ;; |
102 | esac | 66 | esac |
@@ -120,17 +84,17 @@ do | |||
120 | mkdir "$pathcomp" || lasterr=$? | 84 | mkdir "$pathcomp" || lasterr=$? |
121 | 85 | ||
122 | if test ! -d "$pathcomp"; then | 86 | if test ! -d "$pathcomp"; then |
123 | errstatus=$lasterr | 87 | errstatus=$lasterr |
124 | else | 88 | else |
125 | if test ! -z "$dirmode"; then | 89 | if test ! -z "$dirmode"; then |
126 | echo "chmod $dirmode $pathcomp" | 90 | echo "chmod $dirmode $pathcomp" |
127 | lasterr="" | 91 | lasterr="" |
128 | chmod "$dirmode" "$pathcomp" || lasterr=$? | 92 | chmod "$dirmode" "$pathcomp" || lasterr=$? |
129 | 93 | ||
130 | if test ! -z "$lasterr"; then | 94 | if test ! -z "$lasterr"; then |
131 | errstatus=$lasterr | 95 | errstatus=$lasterr |
132 | fi | 96 | fi |
133 | fi | 97 | fi |
134 | fi | 98 | fi |
135 | fi | 99 | fi |
136 | 100 | ||
@@ -143,8 +107,5 @@ exit $errstatus | |||
143 | # Local Variables: | 107 | # Local Variables: |
144 | # mode: shell-script | 108 | # mode: shell-script |
145 | # sh-indentation: 2 | 109 | # sh-indentation: 2 |
146 | # eval: (add-hook 'write-file-hooks 'time-stamp) | ||
147 | # time-stamp-start: "scriptversion=" | ||
148 | # time-stamp-format: "%:y-%02m-%02d.%02H" | ||
149 | # time-stamp-end: "$" | ||
150 | # End: | 110 | # End: |
111 | # mkinstalldirs ends here | ||