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>