mkinstalldirs revision 130561
1219820Sjeff#! /bin/sh
2219820Sjeff# mkinstalldirs --- make directory hierarchy
3219820Sjeff# Author: Noah Friedman <friedman@prep.ai.mit.edu>
4219820Sjeff# Created: 1993-05-16
5219820Sjeff# Public domain
6219820Sjeff
7219820Sjefferrstatus=0
8219820Sjeffdirmode=""
9219820Sjeff
10219820Sjeffusage="\
11219820SjeffUsage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
12219820Sjeff
13219820Sjeff# process command line arguments
14219820Sjeffwhile test $# -gt 0 ; do
15219820Sjeff  case $1 in
16219820Sjeff    -h | --help | --h*)         # -h for help
17219820Sjeff      echo "$usage" 1>&2
18219820Sjeff      exit 0
19219820Sjeff      ;;
20219820Sjeff    -m)                         # -m PERM arg
21219820Sjeff      shift
22219820Sjeff      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
23219820Sjeff      dirmode=$1
24219820Sjeff      shift
25219820Sjeff      ;;
26219820Sjeff    --)                         # stop option processing
27219820Sjeff      shift
28219820Sjeff      break
29219820Sjeff      ;;
30219820Sjeff    -*)                         # unknown option
31219820Sjeff      echo "$usage" 1>&2
32219820Sjeff      exit 1
33219820Sjeff      ;;
34219820Sjeff    *)                          # first non-opt arg
35219820Sjeff      break
36219820Sjeff      ;;
37219820Sjeff  esac
38219820Sjeffdone
39219820Sjeff
40219820Sjefffor file
41219820Sjeffdo
42219820Sjeff  if test -d "$file"; then
43219820Sjeff    shift
44219820Sjeff  else
45219820Sjeff    break
46219820Sjeff  fi
47219820Sjeffdone
48219820Sjeff
49219820Sjeffcase $# in
50219820Sjeff  0) exit 0 ;;
51219820Sjeffesac
52219820Sjeff
53219820Sjeffcase $dirmode in
54219820Sjeff  '')
55219820Sjeff    if mkdir -p -- . 2>/dev/null; then
56219820Sjeff      echo "mkdir -p -- $*"
57219820Sjeff      exec mkdir -p -- "$@"
58219820Sjeff    fi
59219820Sjeff    ;;
60219820Sjeff  *)
61219820Sjeff    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
62219820Sjeff      echo "mkdir -m $dirmode -p -- $*"
63219820Sjeff      exec mkdir -m "$dirmode" -p -- "$@"
64219820Sjeff    fi
65219820Sjeff    ;;
66219820Sjeffesac
67219820Sjeff
68219820Sjefffor file
69219820Sjeffdo
70219820Sjeff  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
71219820Sjeff  shift
72219820Sjeff
73219820Sjeff  pathcomp=
74219820Sjeff  for d
75219820Sjeff  do
76219820Sjeff    pathcomp="$pathcomp$d"
77219820Sjeff    case $pathcomp in
78219820Sjeff      -*) pathcomp=./$pathcomp ;;
79219820Sjeff    esac
80219820Sjeff
81219820Sjeff    if test ! -d "$pathcomp"; then
82219820Sjeff      echo "mkdir $pathcomp"
83219820Sjeff
84219820Sjeff      mkdir "$pathcomp" || lasterr=$?
85219820Sjeff
86219820Sjeff      if test ! -d "$pathcomp"; then
87219820Sjeff  	errstatus=$lasterr
88219820Sjeff      else
89219820Sjeff  	if test ! -z "$dirmode"; then
90219820Sjeff	  echo "chmod $dirmode $pathcomp"
91219820Sjeff    	  lasterr=""
92219820Sjeff  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
93219820Sjeff
94219820Sjeff  	  if test ! -z "$lasterr"; then
95219820Sjeff  	    errstatus=$lasterr
96219820Sjeff  	  fi
97219820Sjeff  	fi
98219820Sjeff      fi
99219820Sjeff    fi
100219820Sjeff
101219820Sjeff    pathcomp="$pathcomp/"
102219820Sjeff  done
103219820Sjeffdone
104219820Sjeff
105219820Sjeffexit $errstatus
106219820Sjeff
107219820Sjeff# Local Variables:
108219820Sjeff# mode: shell-script
109219820Sjeff# sh-indentation: 2
110219820Sjeff# End:
111219820Sjeff# mkinstalldirs ends here
112219820Sjeff