[BACK]Return to mkinstalldirs CVS log [TXT][DIR] Up to [local] / src / usr.bin / sudo

Annotation of src/usr.bin/sudo/mkinstalldirs, Revision 1.3

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