1566738d7Smrg#! /bin/sh
2566738d7Smrg# mkinstalldirs --- make directory hierarchy
3566738d7Smrg# Author: Noah Friedman <friedman@prep.ai.mit.edu>
4566738d7Smrg# Created: 1993-05-16
5566738d7Smrg# Public domain
6566738d7Smrg
7566738d7Smrgerrstatus=0
8566738d7Smrgdirmode=""
9566738d7Smrg
10566738d7Smrgusage="\
11566738d7SmrgUsage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
12566738d7Smrg
13566738d7Smrg# process command line arguments
14566738d7Smrgwhile test $# -gt 0 ; do
15566738d7Smrg  case $1 in
16566738d7Smrg    -h | --help | --h*)         # -h for help
17566738d7Smrg      echo "$usage" 1>&2
18566738d7Smrg      exit 0
19566738d7Smrg      ;;
20566738d7Smrg    -m)                         # -m PERM arg
21566738d7Smrg      shift
22566738d7Smrg      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
23566738d7Smrg      dirmode=$1
24566738d7Smrg      shift
25566738d7Smrg      ;;
26566738d7Smrg    --)                         # stop option processing
27566738d7Smrg      shift
28566738d7Smrg      break
29566738d7Smrg      ;;
30566738d7Smrg    -*)                         # unknown option
31566738d7Smrg      echo "$usage" 1>&2
32566738d7Smrg      exit 1
33566738d7Smrg      ;;
34566738d7Smrg    *)                          # first non-opt arg
35566738d7Smrg      break
36566738d7Smrg      ;;
37566738d7Smrg  esac
38566738d7Smrgdone
39566738d7Smrg
40566738d7Smrgfor file
41566738d7Smrgdo
42566738d7Smrg  if test -d "$file"; then
43566738d7Smrg    shift
44566738d7Smrg  else
45566738d7Smrg    break
46566738d7Smrg  fi
47566738d7Smrgdone
48566738d7Smrg
49566738d7Smrgcase $# in
50566738d7Smrg  0) exit 0 ;;
51566738d7Smrgesac
52566738d7Smrg
53566738d7Smrgcase $dirmode in
54566738d7Smrg  '')
55566738d7Smrg    if mkdir -p -- . 2>/dev/null; then
56566738d7Smrg      echo "mkdir -p -- $*"
57566738d7Smrg      exec mkdir -p -- "$@"
58566738d7Smrg    fi
59566738d7Smrg    ;;
60566738d7Smrg  *)
61566738d7Smrg    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
62566738d7Smrg      echo "mkdir -m $dirmode -p -- $*"
63566738d7Smrg      exec mkdir -m "$dirmode" -p -- "$@"
64566738d7Smrg    fi
65566738d7Smrg    ;;
66566738d7Smrgesac
67566738d7Smrg
68566738d7Smrgfor file
69566738d7Smrgdo
70566738d7Smrg  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
71566738d7Smrg  shift
72566738d7Smrg
73566738d7Smrg  pathcomp=
74566738d7Smrg  for d
75566738d7Smrg  do
76566738d7Smrg    pathcomp="$pathcomp$d"
77566738d7Smrg    case $pathcomp in
78566738d7Smrg      -*) pathcomp=./$pathcomp ;;
79566738d7Smrg    esac
80566738d7Smrg
81566738d7Smrg    if test ! -d "$pathcomp"; then
82566738d7Smrg      echo "mkdir $pathcomp"
83566738d7Smrg
84566738d7Smrg      mkdir "$pathcomp" || lasterr=$?
85566738d7Smrg
86566738d7Smrg      if test ! -d "$pathcomp"; then
87566738d7Smrg  	errstatus=$lasterr
88566738d7Smrg      else
89566738d7Smrg  	if test ! -z "$dirmode"; then
90566738d7Smrg	  echo "chmod $dirmode $pathcomp"
91566738d7Smrg    	  lasterr=""
92566738d7Smrg  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
93566738d7Smrg
94566738d7Smrg  	  if test ! -z "$lasterr"; then
95566738d7Smrg  	    errstatus=$lasterr
96566738d7Smrg  	  fi
97566738d7Smrg  	fi
98566738d7Smrg      fi
99566738d7Smrg    fi
100566738d7Smrg
101566738d7Smrg    pathcomp="$pathcomp/"
102566738d7Smrg  done
103566738d7Smrgdone
104566738d7Smrg
105566738d7Smrgexit $errstatus
106566738d7Smrg
107566738d7Smrg# Local Variables:
108566738d7Smrg# mode: shell-script
109566738d7Smrg# sh-indentation: 2
110566738d7Smrg# End:
111566738d7Smrg# mkinstalldirs ends here
112