Annotation of gforth/mkinstalldirs, revision 1.2
1.1 anton 1: #! /bin/sh
2: # mkinstalldirs --- make directory hierarchy
3: # Author: Noah Friedman <friedman@prep.ai.mit.edu>
4: # Created: 1993-05-16
5: # Public domain
6:
7: errstatus=0
1.2 ! anton 8: dirmode=""
! 9:
! 10: usage="\
! 11: Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
! 12:
! 13: # process command line arguments
! 14: while test $# -gt 0 ; do
! 15: case "${1}" in
! 16: -h | --help | --h* ) # -h for help
! 17: echo "${usage}" 1>&2; exit 0 ;;
! 18: -m ) # -m PERM arg
! 19: shift
! 20: test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
! 21: dirmode="${1}"
! 22: shift ;;
! 23: -- ) shift; break ;; # stop option processing
! 24: -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option
! 25: * ) break ;; # first non-opt arg
! 26: esac
! 27: done
! 28:
! 29: for file
! 30: do
! 31: if test -d "$file"; then
! 32: shift
! 33: else
! 34: break
! 35: fi
! 36: done
! 37:
! 38: case $# in
! 39: 0) exit 0 ;;
! 40: esac
! 41:
! 42: case $dirmode in
! 43: '')
! 44: if mkdir -p -- . 2>/dev/null; then
! 45: echo "mkdir -p -- $*"
! 46: exec mkdir -p -- "$@"
! 47: fi ;;
! 48: *)
! 49: if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
! 50: echo "mkdir -m $dirmode -p -- $*"
! 51: exec mkdir -m "$dirmode" -p -- "$@"
! 52: fi ;;
! 53: esac
1.1 anton 54:
55: for file
56: do
57: set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
58: shift
59:
60: pathcomp=
1.2 ! anton 61: for d
! 62: do
1.1 anton 63: pathcomp="$pathcomp$d"
64: case "$pathcomp" in
65: -* ) pathcomp=./$pathcomp ;;
66: esac
67:
68: if test ! -d "$pathcomp"; then
1.2 ! anton 69: echo "mkdir $pathcomp"
! 70:
! 71: mkdir "$pathcomp" || lasterr=$?
! 72:
! 73: if test ! -d "$pathcomp"; then
! 74: errstatus=$lasterr
! 75: else
! 76: if test ! -z "$dirmode"; then
! 77: echo "chmod $dirmode $pathcomp"
! 78:
! 79: lasterr=""
! 80: chmod "$dirmode" "$pathcomp" || lasterr=$?
! 81:
! 82: if test ! -z "$lasterr"; then
! 83: errstatus=$lasterr
! 84: fi
! 85: fi
! 86: fi
1.1 anton 87: fi
88:
89: pathcomp="$pathcomp/"
90: done
91: done
92:
93: exit $errstatus
94:
1.2 ! anton 95: # Local Variables:
! 96: # mode: shell-script
! 97: # sh-indentation: 3
! 98: # End:
1.1 anton 99: # mkinstalldirs ends here
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>