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