mkinstalldirs revision 67332fb9
167332fb9Smrg#! /bin/sh
267332fb9Smrg# mkinstalldirs --- make directory hierarchy
367332fb9Smrg# Author: Noah Friedman <friedman@prep.ai.mit.edu>
467332fb9Smrg# Created: 1993-05-16
567332fb9Smrg# Public domain
667332fb9Smrg
767332fb9Smrgerrstatus=0
867332fb9Smrgdirmode=""
967332fb9Smrg
1067332fb9Smrgusage="\
1167332fb9SmrgUsage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
1267332fb9Smrg
1367332fb9Smrg# process command line arguments
1467332fb9Smrgwhile test $# -gt 0 ; do
1567332fb9Smrg  case $1 in
1667332fb9Smrg    -h | --help | --h*)         # -h for help
1767332fb9Smrg      echo "$usage" 1>&2
1867332fb9Smrg      exit 0
1967332fb9Smrg      ;;
2067332fb9Smrg    -m)                         # -m PERM arg
2167332fb9Smrg      shift
2267332fb9Smrg      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
2367332fb9Smrg      dirmode=$1
2467332fb9Smrg      shift
2567332fb9Smrg      ;;
2667332fb9Smrg    --)                         # stop option processing
2767332fb9Smrg      shift
2867332fb9Smrg      break
2967332fb9Smrg      ;;
3067332fb9Smrg    -*)                         # unknown option
3167332fb9Smrg      echo "$usage" 1>&2
3267332fb9Smrg      exit 1
3367332fb9Smrg      ;;
3467332fb9Smrg    *)                          # first non-opt arg
3567332fb9Smrg      break
3667332fb9Smrg      ;;
3767332fb9Smrg  esac
3867332fb9Smrgdone
3967332fb9Smrg
4067332fb9Smrgfor file
4167332fb9Smrgdo
4267332fb9Smrg  if test -d "$file"; then
4367332fb9Smrg    shift
4467332fb9Smrg  else
4567332fb9Smrg    break
4667332fb9Smrg  fi
4767332fb9Smrgdone
4867332fb9Smrg
4967332fb9Smrgcase $# in
5067332fb9Smrg  0) exit 0 ;;
5167332fb9Smrgesac
5267332fb9Smrg
5367332fb9Smrgcase $dirmode in
5467332fb9Smrg  '')
5567332fb9Smrg    if mkdir -p -- . 2>/dev/null; then
5667332fb9Smrg      echo "mkdir -p -- $*"
5767332fb9Smrg      exec mkdir -p -- "$@"
5867332fb9Smrg    fi
5967332fb9Smrg    ;;
6067332fb9Smrg  *)
6167332fb9Smrg    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
6267332fb9Smrg      echo "mkdir -m $dirmode -p -- $*"
6367332fb9Smrg      exec mkdir -m "$dirmode" -p -- "$@"
6467332fb9Smrg    fi
6567332fb9Smrg    ;;
6667332fb9Smrgesac
6767332fb9Smrg
6867332fb9Smrgfor file
6967332fb9Smrgdo
7067332fb9Smrg  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
7167332fb9Smrg  shift
7267332fb9Smrg
7367332fb9Smrg  pathcomp=
7467332fb9Smrg  for d
7567332fb9Smrg  do
7667332fb9Smrg    pathcomp="$pathcomp$d"
7767332fb9Smrg    case $pathcomp in
7867332fb9Smrg      -*) pathcomp=./$pathcomp ;;
7967332fb9Smrg    esac
8067332fb9Smrg
8167332fb9Smrg    if test ! -d "$pathcomp"; then
8267332fb9Smrg      echo "mkdir $pathcomp"
8367332fb9Smrg
8467332fb9Smrg      mkdir "$pathcomp" || lasterr=$?
8567332fb9Smrg
8667332fb9Smrg      if test ! -d "$pathcomp"; then
8767332fb9Smrg  	errstatus=$lasterr
8867332fb9Smrg      else
8967332fb9Smrg  	if test ! -z "$dirmode"; then
9067332fb9Smrg	  echo "chmod $dirmode $pathcomp"
9167332fb9Smrg    	  lasterr=""
9267332fb9Smrg  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
9367332fb9Smrg
9467332fb9Smrg  	  if test ! -z "$lasterr"; then
9567332fb9Smrg  	    errstatus=$lasterr
9667332fb9Smrg  	  fi
9767332fb9Smrg  	fi
9867332fb9Smrg      fi
9967332fb9Smrg    fi
10067332fb9Smrg
10167332fb9Smrg    pathcomp="$pathcomp/"
10267332fb9Smrg  done
10367332fb9Smrgdone
10467332fb9Smrg
10567332fb9Smrgexit $errstatus
10667332fb9Smrg
10767332fb9Smrg# Local Variables:
10867332fb9Smrg# mode: shell-script
10967332fb9Smrg# sh-indentation: 2
11067332fb9Smrg# End:
11167332fb9Smrg# mkinstalldirs ends here
112