comparison mkinstalldirs @ 390:6bb98fbbae04 trunk

[svn] - translation framework
author nenolod
date Mon, 18 Dec 2006 12:25:28 -0800
parents 13389e613d67
children
comparison
equal deleted inserted replaced
389:8ab5fa857f33 390:6bb98fbbae04
1 #! /bin/sh 1 #! /bin/sh
2 # mkinstalldirs --- make directory hierarchy 2 # 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>
4 # Created: 1993-05-16 7 # 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>.
6 13
7 errstatus=0 14 errstatus=0
8 dirmode="" 15 dirmode=""
9 16
10 usage="\ 17 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>."
12 24
13 # process command line arguments 25 # process command line arguments
14 while test $# -gt 0 ; do 26 while test $# -gt 0 ; do
15 case $1 in 27 case $1 in
16 -h | --help | --h*) # -h for help 28 -h | --help | --h*) # -h for help
17 echo "$usage" 1>&2 29 echo "$usage"
18 exit 0 30 exit 0
19 ;; 31 ;;
20 -m) # -m PERM arg 32 -m) # -m PERM arg
21 shift 33 shift
22 test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } 34 test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
23 dirmode=$1 35 dirmode=$1
24 shift 36 shift
37 ;;
38 --version)
39 echo "$0 $scriptversion"
40 exit 0
25 ;; 41 ;;
26 --) # stop option processing 42 --) # stop option processing
27 shift 43 shift
28 break 44 break
29 ;; 45 ;;
48 64
49 case $# in 65 case $# in
50 0) exit 0 ;; 66 0) exit 0 ;;
51 esac 67 esac
52 68
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.
53 case $dirmode in 75 case $dirmode in
54 '') 76 '')
55 if mkdir -p -- . 2>/dev/null; then 77 if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
56 echo "mkdir -p -- $*" 78 echo "mkdir -p -- $*"
57 exec mkdir -p -- "$@" 79 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
58 fi 87 fi
59 ;; 88 ;;
60 *) 89 *)
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
62 echo "mkdir -m $dirmode -p -- $*" 92 echo "mkdir -m $dirmode -p -- $*"
63 exec mkdir -m "$dirmode" -p -- "$@" 93 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
64 fi 100 fi
65 ;; 101 ;;
66 esac 102 esac
67 103
68 for file 104 for file
82 echo "mkdir $pathcomp" 118 echo "mkdir $pathcomp"
83 119
84 mkdir "$pathcomp" || lasterr=$? 120 mkdir "$pathcomp" || lasterr=$?
85 121
86 if test ! -d "$pathcomp"; then 122 if test ! -d "$pathcomp"; then
87 errstatus=$lasterr 123 errstatus=$lasterr
88 else 124 else
89 if test ! -z "$dirmode"; then 125 if test ! -z "$dirmode"; then
90 echo "chmod $dirmode $pathcomp" 126 echo "chmod $dirmode $pathcomp"
91 lasterr="" 127 lasterr=""
92 chmod "$dirmode" "$pathcomp" || lasterr=$? 128 chmod "$dirmode" "$pathcomp" || lasterr=$?
93 129
94 if test ! -z "$lasterr"; then 130 if test ! -z "$lasterr"; then
95 errstatus=$lasterr 131 errstatus=$lasterr
96 fi 132 fi
97 fi 133 fi
98 fi 134 fi
99 fi 135 fi
100 136
101 pathcomp="$pathcomp/" 137 pathcomp="$pathcomp/"
102 done 138 done
105 exit $errstatus 141 exit $errstatus
106 142
107 # Local Variables: 143 # Local Variables:
108 # mode: shell-script 144 # mode: shell-script
109 # sh-indentation: 2 145 # 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: "$"
110 # End: 150 # End:
111 # mkinstalldirs ends here