Annotation of embedaddon/libiconv/libcharset/build-aux/mkinstalldirs, revision 1.1.1.2
1.1 misho 1: #! /bin/sh
2: # mkinstalldirs --- make directory hierarchy
1.1.1.2 ! misho 3:
! 4: scriptversion=2005-02-02.21
! 5:
! 6: # Original author: Noah Friedman <friedman@prep.ai.mit.edu>
1.1 misho 7: # Created: 1993-05-16
1.1.1.2 ! misho 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>.
1.1 misho 13:
14: errstatus=0
15: dirmode=""
16:
17: usage="\
1.1.1.2 ! misho 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>."
1.1 misho 24:
25: # process command line arguments
26: while test $# -gt 0 ; do
27: case $1 in
28: -h | --help | --h*) # -h for help
1.1.1.2 ! misho 29: echo "$usage"
! 30: exit $?
1.1 misho 31: ;;
32: -m) # -m PERM arg
33: shift
34: test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
35: dirmode=$1
36: shift
37: ;;
1.1.1.2 ! misho 38: --version)
! 39: echo "$0 $scriptversion"
! 40: exit $?
! 41: ;;
1.1 misho 42: --) # stop option processing
43: shift
44: break
45: ;;
46: -*) # unknown option
47: echo "$usage" 1>&2
48: exit 1
49: ;;
50: *) # first non-opt arg
51: break
52: ;;
53: esac
54: done
55:
56: for file
57: do
58: if test -d "$file"; then
59: shift
60: else
61: break
62: fi
63: done
64:
65: case $# in
66: 0) exit 0 ;;
67: esac
68:
1.1.1.2 ! misho 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.
1.1 misho 75: case $dirmode in
76: '')
1.1.1.2 ! misho 77: if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
1.1 misho 78: echo "mkdir -p -- $*"
79: exec mkdir -p -- "$@"
1.1.1.2 ! misho 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
1.1 misho 87: fi
88: ;;
89: *)
1.1.1.2 ! misho 90: if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
! 91: test ! -d ./--version; then
1.1 misho 92: echo "mkdir -m $dirmode -p -- $*"
93: exec mkdir -m "$dirmode" -p -- "$@"
1.1.1.2 ! misho 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
1.1 misho 100: fi
101: ;;
102: esac
103:
104: for file
105: do
106: set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
107: shift
108:
109: pathcomp=
110: for d
111: do
112: pathcomp="$pathcomp$d"
113: case $pathcomp in
114: -*) pathcomp=./$pathcomp ;;
115: esac
116:
117: if test ! -d "$pathcomp"; then
118: echo "mkdir $pathcomp"
119:
120: mkdir "$pathcomp" || lasterr=$?
121:
122: if test ! -d "$pathcomp"; then
1.1.1.2 ! misho 123: errstatus=$lasterr
1.1 misho 124: else
1.1.1.2 ! misho 125: if test ! -z "$dirmode"; then
1.1 misho 126: echo "chmod $dirmode $pathcomp"
1.1.1.2 ! misho 127: lasterr=""
! 128: chmod "$dirmode" "$pathcomp" || lasterr=$?
1.1 misho 129:
1.1.1.2 ! misho 130: if test ! -z "$lasterr"; then
! 131: errstatus=$lasterr
! 132: fi
! 133: fi
1.1 misho 134: fi
135: fi
136:
137: pathcomp="$pathcomp/"
138: done
139: done
140:
141: exit $errstatus
142:
143: # Local Variables:
144: # mode: shell-script
145: # sh-indentation: 2
1.1.1.2 ! misho 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: "$"
1.1 misho 150: # End:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>