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