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