joachim99@2: #! /bin/sh joachim99@2: # mkinstalldirs --- make directory hierarchy joachim99@2: # Author: Noah Friedman joachim99@2: # Created: 1993-05-16 joachim99@2: # Public domain joachim99@2: joachim99@14: errstatus=0 joachim99@14: dirmode="" joachim99@2: joachim99@14: usage="\ joachim99@14: Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." joachim99@14: joachim99@14: # process command line arguments joachim99@14: while test $# -gt 0 ; do joachim99@14: case $1 in joachim99@14: -h | --help | --h*) # -h for help joachim99@14: echo "$usage" 1>&2 joachim99@14: exit 0 joachim99@14: ;; joachim99@14: -m) # -m PERM arg joachim99@14: shift joachim99@14: test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } joachim99@14: dirmode=$1 joachim99@14: shift joachim99@14: ;; joachim99@14: --) # stop option processing joachim99@14: shift joachim99@14: break joachim99@14: ;; joachim99@14: -*) # unknown option joachim99@14: echo "$usage" 1>&2 joachim99@14: exit 1 joachim99@14: ;; joachim99@14: *) # first non-opt arg joachim99@14: break joachim99@14: ;; joachim99@14: esac joachim99@14: done joachim99@2: joachim99@2: for file joachim99@2: do joachim99@14: if test -d "$file"; then joachim99@14: shift joachim99@14: else joachim99@14: break joachim99@14: fi joachim99@14: done joachim99@2: joachim99@14: case $# in joachim99@14: 0) exit 0 ;; joachim99@14: esac joachim99@2: joachim99@14: case $dirmode in joachim99@14: '') joachim99@14: if mkdir -p -- . 2>/dev/null; then joachim99@14: echo "mkdir -p -- $*" joachim99@14: exec mkdir -p -- "$@" joachim99@14: fi joachim99@14: ;; joachim99@14: *) joachim99@14: if mkdir -m "$dirmode" -p -- . 2>/dev/null; then joachim99@14: echo "mkdir -m $dirmode -p -- $*" joachim99@14: exec mkdir -m "$dirmode" -p -- "$@" joachim99@14: fi joachim99@14: ;; joachim99@14: esac joachim99@2: joachim99@14: for file joachim99@14: do joachim99@14: set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` joachim99@14: shift joachim99@2: joachim99@14: pathcomp= joachim99@14: for d joachim99@14: do joachim99@14: pathcomp="$pathcomp$d" joachim99@14: case $pathcomp in joachim99@14: -*) pathcomp=./$pathcomp ;; joachim99@14: esac joachim99@2: joachim99@14: if test ! -d "$pathcomp"; then joachim99@14: echo "mkdir $pathcomp" joachim99@14: joachim99@14: mkdir "$pathcomp" || lasterr=$? joachim99@14: joachim99@14: if test ! -d "$pathcomp"; then joachim99@14: errstatus=$lasterr joachim99@14: else joachim99@14: if test ! -z "$dirmode"; then joachim99@14: echo "chmod $dirmode $pathcomp" joachim99@14: lasterr="" joachim99@14: chmod "$dirmode" "$pathcomp" || lasterr=$? joachim99@14: joachim99@14: if test ! -z "$lasterr"; then joachim99@14: errstatus=$lasterr joachim99@14: fi joachim99@14: fi joachim99@14: fi joachim99@14: fi joachim99@14: joachim99@14: pathcomp="$pathcomp/" joachim99@14: done joachim99@2: done joachim99@2: joachim99@2: exit $errstatus joachim99@2: joachim99@14: # Local Variables: joachim99@14: # mode: shell-script joachim99@14: # sh-indentation: 2 joachim99@14: # End: joachim99@2: # mkinstalldirs ends here