1136644Sache#! /bin/sh
2136644Sache# mkinstalldirs --- make directory hierarchy
3136644Sache# Author: Noah Friedman <friedman@prep.ai.mit.edu>
4136644Sache# Created: 1993-05-16
5136644Sache# Public domain
6136644Sache
7136644Sacheerrstatus=0
8136644Sachedirmode=""
9136644Sache
10136644Sacheusage="\
11136644SacheUsage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
12136644Sache
13136644Sache# process command line arguments
14136644Sachewhile test $# -gt 0 ; do
15136644Sache  case $1 in
16136644Sache    -h | --help | --h*)         # -h for help
17136644Sache      echo "$usage" 1>&2
18136644Sache      exit 0
19136644Sache      ;;
20136644Sache    -m)                         # -m PERM arg
21136644Sache      shift
22136644Sache      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
23136644Sache      dirmode=$1
24136644Sache      shift
25136644Sache      ;;
26136644Sache    --)                         # stop option processing
27136644Sache      shift
28136644Sache      break
29136644Sache      ;;
30136644Sache    -*)                         # unknown option
31136644Sache      echo "$usage" 1>&2
32136644Sache      exit 1
33136644Sache      ;;
34136644Sache    *)                          # first non-opt arg
35136644Sache      break
36136644Sache      ;;
37136644Sache  esac
38136644Sachedone
39136644Sache
40136644Sachefor file
41136644Sachedo
42136644Sache  if test -d "$file"; then
43136644Sache    shift
44136644Sache  else
45136644Sache    break
46136644Sache  fi
47136644Sachedone
48136644Sache
49136644Sachecase $# in
50136644Sache  0) exit 0 ;;
51136644Sacheesac
52136644Sache
53136644Sachecase $dirmode in
54136644Sache  '')
55136644Sache    if mkdir -p -- . 2>/dev/null; then
56136644Sache      echo "mkdir -p -- $*"
57136644Sache      exec mkdir -p -- "$@"
58136644Sache    fi
59136644Sache    ;;
60136644Sache  *)
61136644Sache    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
62136644Sache      echo "mkdir -m $dirmode -p -- $*"
63136644Sache      exec mkdir -m "$dirmode" -p -- "$@"
64136644Sache    fi
65136644Sache    ;;
66136644Sacheesac
67136644Sache
68136644Sachefor file
69136644Sachedo
70136644Sache  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
71136644Sache  shift
72136644Sache
73136644Sache  pathcomp=
74136644Sache  for d
75136644Sache  do
76136644Sache    pathcomp="$pathcomp$d"
77136644Sache    case $pathcomp in
78136644Sache      -*) pathcomp=./$pathcomp ;;
79136644Sache    esac
80136644Sache
81136644Sache    if test ! -d "$pathcomp"; then
82136644Sache      echo "mkdir $pathcomp"
83136644Sache
84136644Sache      mkdir "$pathcomp" || lasterr=$?
85136644Sache
86136644Sache      if test ! -d "$pathcomp"; then
87136644Sache  	errstatus=$lasterr
88136644Sache      else
89136644Sache  	if test ! -z "$dirmode"; then
90136644Sache	  echo "chmod $dirmode $pathcomp"
91136644Sache    	  lasterr=""
92136644Sache  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
93136644Sache
94136644Sache  	  if test ! -z "$lasterr"; then
95136644Sache  	    errstatus=$lasterr
96136644Sache  	  fi
97136644Sache  	fi
98136644Sache      fi
99136644Sache    fi
100136644Sache
101136644Sache    pathcomp="$pathcomp/"
102136644Sache  done
103136644Sachedone
104136644Sache
105136644Sacheexit $errstatus
106136644Sache
107136644Sache# Local Variables:
108136644Sache# mode: shell-script
109136644Sache# sh-indentation: 2
110136644Sache# End:
111136644Sache# mkinstalldirs ends here
112