source: trunk/third/libdaemon/mkinstalldirs @ 20386

Revision 20386, 1.9 KB checked in by amb, 21 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r20385, which included commits to RCS files with non-trunk default branches.
  • Property svn:executable set to *
Line 
1#! /bin/sh
2# mkinstalldirs --- make directory hierarchy
3# Author: Noah Friedman <friedman@prep.ai.mit.edu>
4# Created: 1993-05-16
5# Public domain
6
7errstatus=0
8dirmode=""
9
10usage="\
11Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
12
13# process command line arguments
14while test $# -gt 0 ; do
15  case $1 in
16    -h | --help | --h*)         # -h for help
17      echo "$usage" 1>&2
18      exit 0
19      ;;
20    -m)                         # -m PERM arg
21      shift
22      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
23      dirmode=$1
24      shift
25      ;;
26    --)                         # stop option processing
27      shift
28      break
29      ;;
30    -*)                         # unknown option
31      echo "$usage" 1>&2
32      exit 1
33      ;;
34    *)                          # first non-opt arg
35      break
36      ;;
37  esac
38done
39
40for file
41do
42  if test -d "$file"; then
43    shift
44  else
45    break
46  fi
47done
48
49case $# in
50  0) exit 0 ;;
51esac
52
53case $dirmode in
54  '')
55    if mkdir -p -- . 2>/dev/null; then
56      echo "mkdir -p -- $*"
57      exec mkdir -p -- "$@"
58    fi
59    ;;
60  *)
61    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
62      echo "mkdir -m $dirmode -p -- $*"
63      exec mkdir -m "$dirmode" -p -- "$@"
64    fi
65    ;;
66esac
67
68for file
69do
70  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
71  shift
72
73  pathcomp=
74  for d
75  do
76    pathcomp="$pathcomp$d"
77    case $pathcomp in
78      -*) pathcomp=./$pathcomp ;;
79    esac
80
81    if test ! -d "$pathcomp"; then
82      echo "mkdir $pathcomp"
83
84      mkdir "$pathcomp" || lasterr=$?
85
86      if test ! -d "$pathcomp"; then
87        errstatus=$lasterr
88      else
89        if test ! -z "$dirmode"; then
90          echo "chmod $dirmode $pathcomp"
91          lasterr=""
92          chmod "$dirmode" "$pathcomp" || lasterr=$?
93
94          if test ! -z "$lasterr"; then
95            errstatus=$lasterr
96          fi
97        fi
98      fi
99    fi
100
101    pathcomp="$pathcomp/"
102  done
103done
104
105exit $errstatus
106
107# Local Variables:
108# mode: shell-script
109# sh-indentation: 2
110# End:
111# mkinstalldirs ends here
Note: See TracBrowser for help on using the repository browser.