1b3307321Smrg#! /bin/sh
2b3307321Smrg# mkinstalldirs --- make directory hierarchy
3b3307321Smrg# Author: Noah Friedman <friedman@prep.ai.mit.edu>
4b3307321Smrg# Created: 1993-05-16
5b3307321Smrg# Public domain
6b3307321Smrg
7b3307321Smrgerrstatus=0
8b3307321Smrgdirmode=""
9b3307321Smrg
10b3307321Smrgusage="\
11b3307321SmrgUsage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
12b3307321Smrg
13b3307321Smrg# process command line arguments
14b3307321Smrgwhile test $# -gt 0 ; do
15b3307321Smrg  case $1 in
16b3307321Smrg    -h | --help | --h*)         # -h for help
17b3307321Smrg      echo "$usage" 1>&2
18b3307321Smrg      exit 0
19b3307321Smrg      ;;
20b3307321Smrg    -m)                         # -m PERM arg
21b3307321Smrg      shift
22b3307321Smrg      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
23b3307321Smrg      dirmode=$1
24b3307321Smrg      shift
25b3307321Smrg      ;;
26b3307321Smrg    --)                         # stop option processing
27b3307321Smrg      shift
28b3307321Smrg      break
29b3307321Smrg      ;;
30b3307321Smrg    -*)                         # unknown option
31b3307321Smrg      echo "$usage" 1>&2
32b3307321Smrg      exit 1
33b3307321Smrg      ;;
34b3307321Smrg    *)                          # first non-opt arg
35b3307321Smrg      break
36b3307321Smrg      ;;
37b3307321Smrg  esac
38b3307321Smrgdone
39b3307321Smrg
40b3307321Smrgfor file
41b3307321Smrgdo
42b3307321Smrg  if test -d "$file"; then
43b3307321Smrg    shift
44b3307321Smrg  else
45b3307321Smrg    break
46b3307321Smrg  fi
47b3307321Smrgdone
48b3307321Smrg
49b3307321Smrgcase $# in
50b3307321Smrg  0) exit 0 ;;
51b3307321Smrgesac
52b3307321Smrg
53b3307321Smrgcase $dirmode in
54b3307321Smrg  '')
55b3307321Smrg    if mkdir -p -- . 2>/dev/null; then
56b3307321Smrg      echo "mkdir -p -- $*"
57b3307321Smrg      exec mkdir -p -- "$@"
58b3307321Smrg    fi
59b3307321Smrg    ;;
60b3307321Smrg  *)
61b3307321Smrg    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
62b3307321Smrg      echo "mkdir -m $dirmode -p -- $*"
63b3307321Smrg      exec mkdir -m "$dirmode" -p -- "$@"
64b3307321Smrg    fi
65b3307321Smrg    ;;
66b3307321Smrgesac
67b3307321Smrg
68b3307321Smrgfor file
69b3307321Smrgdo
70b3307321Smrg  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
71b3307321Smrg  shift
72b3307321Smrg
73b3307321Smrg  pathcomp=
74b3307321Smrg  for d
75b3307321Smrg  do
76b3307321Smrg    pathcomp="$pathcomp$d"
77b3307321Smrg    case $pathcomp in
78b3307321Smrg      -*) pathcomp=./$pathcomp ;;
79b3307321Smrg    esac
80b3307321Smrg
81b3307321Smrg    if test ! -d "$pathcomp"; then
82b3307321Smrg      echo "mkdir $pathcomp"
83b3307321Smrg
84b3307321Smrg      mkdir "$pathcomp" || lasterr=$?
85b3307321Smrg
86b3307321Smrg      if test ! -d "$pathcomp"; then
87b3307321Smrg  	errstatus=$lasterr
88b3307321Smrg      else
89b3307321Smrg  	if test ! -z "$dirmode"; then
90b3307321Smrg	  echo "chmod $dirmode $pathcomp"
91b3307321Smrg    	  lasterr=""
92b3307321Smrg  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
93b3307321Smrg
94b3307321Smrg  	  if test ! -z "$lasterr"; then
95b3307321Smrg  	    errstatus=$lasterr
96b3307321Smrg  	  fi
97b3307321Smrg  	fi
98b3307321Smrg      fi
99b3307321Smrg    fi
100b3307321Smrg
101b3307321Smrg    pathcomp="$pathcomp/"
102b3307321Smrg  done
103b3307321Smrgdone
104b3307321Smrg
105b3307321Smrgexit $errstatus
106b3307321Smrg
107b3307321Smrg# Local Variables:
108b3307321Smrg# mode: shell-script
109b3307321Smrg# sh-indentation: 2
110b3307321Smrg# End:
111b3307321Smrg# mkinstalldirs ends here
112