1335e815aSmrg#! /bin/sh
2335e815aSmrg# mkinstalldirs --- make directory hierarchy
3335e815aSmrg# Author: Noah Friedman <friedman@prep.ai.mit.edu>
4335e815aSmrg# Created: 1993-05-16
5335e815aSmrg# Public domain
6335e815aSmrg
7335e815aSmrgerrstatus=0
8335e815aSmrgdirmode=""
9335e815aSmrg
10335e815aSmrgusage="\
11335e815aSmrgUsage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
12335e815aSmrg
13335e815aSmrg# process command line arguments
14335e815aSmrgwhile test $# -gt 0 ; do
15335e815aSmrg  case $1 in
16335e815aSmrg    -h | --help | --h*)         # -h for help
17335e815aSmrg      echo "$usage" 1>&2
18335e815aSmrg      exit 0
19335e815aSmrg      ;;
20335e815aSmrg    -m)                         # -m PERM arg
21335e815aSmrg      shift
22335e815aSmrg      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
23335e815aSmrg      dirmode=$1
24335e815aSmrg      shift
25335e815aSmrg      ;;
26335e815aSmrg    --)                         # stop option processing
27335e815aSmrg      shift
28335e815aSmrg      break
29335e815aSmrg      ;;
30335e815aSmrg    -*)                         # unknown option
31335e815aSmrg      echo "$usage" 1>&2
32335e815aSmrg      exit 1
33335e815aSmrg      ;;
34335e815aSmrg    *)                          # first non-opt arg
35335e815aSmrg      break
36335e815aSmrg      ;;
37335e815aSmrg  esac
38335e815aSmrgdone
39335e815aSmrg
40335e815aSmrgfor file
41335e815aSmrgdo
42335e815aSmrg  if test -d "$file"; then
43335e815aSmrg    shift
44335e815aSmrg  else
45335e815aSmrg    break
46335e815aSmrg  fi
47335e815aSmrgdone
48335e815aSmrg
49335e815aSmrgcase $# in
50335e815aSmrg  0) exit 0 ;;
51335e815aSmrgesac
52335e815aSmrg
53335e815aSmrgcase $dirmode in
54335e815aSmrg  '')
55335e815aSmrg    if mkdir -p -- . 2>/dev/null; then
56335e815aSmrg      echo "mkdir -p -- $*"
57335e815aSmrg      exec mkdir -p -- "$@"
58335e815aSmrg    fi
59335e815aSmrg    ;;
60335e815aSmrg  *)
61335e815aSmrg    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
62335e815aSmrg      echo "mkdir -m $dirmode -p -- $*"
63335e815aSmrg      exec mkdir -m "$dirmode" -p -- "$@"
64335e815aSmrg    fi
65335e815aSmrg    ;;
66335e815aSmrgesac
67335e815aSmrg
68335e815aSmrgfor file
69335e815aSmrgdo
70335e815aSmrg  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
71335e815aSmrg  shift
72335e815aSmrg
73335e815aSmrg  pathcomp=
74335e815aSmrg  for d
75335e815aSmrg  do
76335e815aSmrg    pathcomp="$pathcomp$d"
77335e815aSmrg    case $pathcomp in
78335e815aSmrg      -*) pathcomp=./$pathcomp ;;
79335e815aSmrg    esac
80335e815aSmrg
81335e815aSmrg    if test ! -d "$pathcomp"; then
82335e815aSmrg      echo "mkdir $pathcomp"
83335e815aSmrg
84335e815aSmrg      mkdir "$pathcomp" || lasterr=$?
85335e815aSmrg
86335e815aSmrg      if test ! -d "$pathcomp"; then
87335e815aSmrg  	errstatus=$lasterr
88335e815aSmrg      else
89335e815aSmrg  	if test ! -z "$dirmode"; then
90335e815aSmrg	  echo "chmod $dirmode $pathcomp"
91335e815aSmrg    	  lasterr=""
92335e815aSmrg  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
93335e815aSmrg
94335e815aSmrg  	  if test ! -z "$lasterr"; then
95335e815aSmrg  	    errstatus=$lasterr
96335e815aSmrg  	  fi
97335e815aSmrg  	fi
98335e815aSmrg      fi
99335e815aSmrg    fi
100335e815aSmrg
101335e815aSmrg    pathcomp="$pathcomp/"
102335e815aSmrg  done
103335e815aSmrgdone
104335e815aSmrg
105335e815aSmrgexit $errstatus
106335e815aSmrg
107335e815aSmrg# Local Variables:
108335e815aSmrg# mode: shell-script
109335e815aSmrg# sh-indentation: 2
110335e815aSmrg# End:
111335e815aSmrg# mkinstalldirs ends here
112