#! /bin/sh
# mkinstalldirs --- make directory hierarchy
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
# Public domain

errstatus=0
dirmode=""

usage="\
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."

# process command line arguments
while test $# -gt 0 ; do
   case "${1}" in
     -h | --help | --h* )        # -h for help
         echo "${usage}" 1>&2; exit 0 ;;
     -m )                        # -m PERM arg
         shift
         test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
         dirmode="${1}"
         shift ;;
     -- ) shift; break ;;        # stop option processing
     -* ) echo "${usage}" 1>&2; exit 1 ;;	# unknown option
     *  ) break ;;               # first non-opt arg
   esac
done

for file
do
   if test -d "$file"; then
      shift
   else
      break
   fi
done

case $# in
   0) exit 0 ;;
esac

case $dirmode in
   '')
      if mkdir -p -- . 2>/dev/null; then
         echo "mkdir -p -- $*"
         exec mkdir -p -- "$@"
      fi ;;
   *)
      if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
         echo "mkdir -m $dirmode -p -- $*"
         exec mkdir -m "$dirmode" -p -- "$@"
      fi ;;
esac

for file
do
   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
   shift

   pathcomp=
   for d
   do
      pathcomp="$pathcomp$d"
      case "$pathcomp" in
         -* ) pathcomp=./$pathcomp ;;
      esac

      if test ! -d "$pathcomp"; then
         echo "mkdir $pathcomp"

         mkdir "$pathcomp" || lasterr=$?

         if test ! -d "$pathcomp"; then
            errstatus=$lasterr
         else
            if test ! -z "$dirmode"; then
               echo "chmod $dirmode $pathcomp"

               lasterr=""
               chmod "$dirmode" "$pathcomp" || lasterr=$?

               if test ! -z "$lasterr"; then
                  errstatus=$lasterr
               fi
            fi
         fi
      fi

      pathcomp="$pathcomp/"
   done
done

exit $errstatus

# Local Variables:
# mode: shell-script
# sh-indentation: 3
# End:
# mkinstalldirs ends here
