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