Annotation of embedaddon/libiconv/build-aux/mkinstalldirs, revision 1.1
1.1 ! misho 1: #! /bin/sh
! 2: # mkinstalldirs --- make directory hierarchy
! 3:
! 4: scriptversion=2005-02-02.21
! 5:
! 6: # Original author: Noah Friedman <friedman@prep.ai.mit.edu>
! 7: # Created: 1993-05-16
! 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>.
! 13:
! 14: errstatus=0
! 15: dirmode=""
! 16:
! 17: usage="\
! 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>."
! 24:
! 25: # process command line arguments
! 26: while test $# -gt 0 ; do
! 27: case $1 in
! 28: -h | --help | --h*) # -h for help
! 29: echo "$usage"
! 30: exit $?
! 31: ;;
! 32: -m) # -m PERM arg
! 33: shift
! 34: test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
! 35: dirmode=$1
! 36: shift
! 37: ;;
! 38: --version)
! 39: echo "$0 $scriptversion"
! 40: exit $?
! 41: ;;
! 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:
! 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
! 76: '')
! 77: if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
! 78: echo "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
! 87: fi
! 88: ;;
! 89: *)
! 90: if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
! 91: test ! -d ./--version; then
! 92: echo "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
! 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
! 123: errstatus=$lasterr
! 124: else
! 125: if test ! -z "$dirmode"; then
! 126: echo "chmod $dirmode $pathcomp"
! 127: lasterr=""
! 128: chmod "$dirmode" "$pathcomp" || lasterr=$?
! 129:
! 130: if test ! -z "$lasterr"; then
! 131: errstatus=$lasterr
! 132: fi
! 133: fi
! 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
! 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:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>