[gforth] / gforth / mkinstalldirs  

gforth: gforth/mkinstalldirs


1 : anton 1.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 :    
7 :     errstatus=0
8 : anton 1.2 dirmode=""
9 :    
10 :     usage="\
11 :     Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
12 :    
13 :     # process command line arguments
14 :     while test $# -gt 0 ; do
15 :     case "${1}" in
16 :     -h | --help | --h* ) # -h for help
17 :     echo "${usage}" 1>&2; exit 0 ;;
18 :     -m ) # -m PERM arg
19 :     shift
20 :     test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
21 :     dirmode="${1}"
22 :     shift ;;
23 :     -- ) shift; break ;; # stop option processing
24 :     -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option
25 :     * ) break ;; # first non-opt arg
26 :     esac
27 :     done
28 :    
29 :     for file
30 :     do
31 :     if test -d "$file"; then
32 :     shift
33 :     else
34 :     break
35 :     fi
36 :     done
37 :    
38 :     case $# in
39 :     0) exit 0 ;;
40 :     esac
41 :    
42 :     case $dirmode in
43 :     '')
44 :     if mkdir -p -- . 2>/dev/null; then
45 :     echo "mkdir -p -- $*"
46 :     exec mkdir -p -- "$@"
47 :     fi ;;
48 :     *)
49 :     if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
50 :     echo "mkdir -m $dirmode -p -- $*"
51 :     exec mkdir -m "$dirmode" -p -- "$@"
52 :     fi ;;
53 :     esac
54 : anton 1.1
55 :     for file
56 :     do
57 :     set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
58 :     shift
59 :    
60 :     pathcomp=
61 : anton 1.2 for d
62 :     do
63 : anton 1.1 pathcomp="$pathcomp$d"
64 :     case "$pathcomp" in
65 :     -* ) pathcomp=./$pathcomp ;;
66 :     esac
67 :    
68 :     if test ! -d "$pathcomp"; then
69 : anton 1.2 echo "mkdir $pathcomp"
70 :    
71 :     mkdir "$pathcomp" || lasterr=$?
72 :    
73 :     if test ! -d "$pathcomp"; then
74 :     errstatus=$lasterr
75 :     else
76 :     if test ! -z "$dirmode"; then
77 :     echo "chmod $dirmode $pathcomp"
78 :    
79 :     lasterr=""
80 :     chmod "$dirmode" "$pathcomp" || lasterr=$?
81 :    
82 :     if test ! -z "$lasterr"; then
83 :     errstatus=$lasterr
84 :     fi
85 :     fi
86 :     fi
87 : anton 1.1 fi
88 :    
89 :     pathcomp="$pathcomp/"
90 :     done
91 :     done
92 :    
93 :     exit $errstatus
94 :    
95 : anton 1.2 # Local Variables:
96 :     # mode: shell-script
97 :     # sh-indentation: 3
98 :     # End:
99 : anton 1.1 # mkinstalldirs ends here

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help