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