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