Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 3bfb93a

Browse files
committed
New version of mkinstalldirs fixes problems on Tru64 UNIX.
1 parent 6889537 commit 3bfb93a

File tree

1 file changed

+54
-15
lines changed

1 file changed

+54
-15
lines changed

config/mkinstalldirs

+54-15
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,32 @@
11
#! /bin/sh
22
# mkinstalldirs --- make directory hierarchy
3-
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
3+
4+
scriptversion=2004-02-15.20
5+
6+
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
47
# Created: 1993-05-16
5-
# Public domain
8+
# 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>.
613

714
errstatus=0
815
dirmode=""
916

1017
usage="\
11-
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
18+
Usage: mkinstalldirs [-h] [--help] [--version] [-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>."
1224

1325
# process command line arguments
1426
while test $# -gt 0 ; do
1527
case $1 in
1628
-h | --help | --h*) # -h for help
17-
echo "$usage" 1>&2
29+
echo "$usage"
1830
exit 0
1931
;;
2032
-m) # -m PERM arg
@@ -23,6 +35,10 @@ while test $# -gt 0 ; do
2335
dirmode=$1
2436
shift
2537
;;
38+
--version)
39+
echo "$0 $scriptversion"
40+
exit 0
41+
;;
2642
--) # stop option processing
2743
shift
2844
break
@@ -50,17 +66,37 @@ case $# in
5066
0) exit 0 ;;
5167
esac
5268

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.
5375
case $dirmode in
5476
'')
55-
if mkdir -p -- . 2>/dev/null; then
77+
if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
5678
echo "mkdir -p -- $*"
5779
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
5887
fi
5988
;;
6089
*)
61-
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
90+
if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
91+
test ! -d ./--version; then
6292
echo "mkdir -m $dirmode -p -- $*"
6393
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
64100
fi
65101
;;
66102
esac
@@ -84,17 +120,17 @@ do
84120
mkdir "$pathcomp" || lasterr=$?
85121

86122
if test ! -d "$pathcomp"; then
87-
errstatus=$lasterr
123+
errstatus=$lasterr
88124
else
89-
if test ! -z "$dirmode"; then
125+
if test ! -z "$dirmode"; then
90126
echo "chmod $dirmode $pathcomp"
91-
lasterr=""
92-
chmod "$dirmode" "$pathcomp" || lasterr=$?
127+
lasterr=""
128+
chmod "$dirmode" "$pathcomp" || lasterr=$?
93129

94-
if test ! -z "$lasterr"; then
95-
errstatus=$lasterr
96-
fi
97-
fi
130+
if test ! -z "$lasterr"; then
131+
errstatus=$lasterr
132+
fi
133+
fi
98134
fi
99135
fi
100136

@@ -107,5 +143,8 @@ exit $errstatus
107143
# Local Variables:
108144
# mode: shell-script
109145
# 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: "$"
110150
# End:
111-
# mkinstalldirs ends here

0 commit comments

Comments
 (0)