filename | mkinstalldirs |
changeset | 491:515c81624943 |
author | nkeynes |
date | Sat Jan 22 06:07:17 2011 +1000 (13 years ago) |
permissions | -rwxr-xr-x |
last change | Mark the NV vertex range functions as weak (to keep things working on drivers that don't provide the entry points) Set the fence at the start (really just to prevent an error the first time around) |
file | annotate | diff | log | raw |
nkeynes@491 | 1 | #! /bin/sh |
nkeynes@491 | 2 | # mkinstalldirs --- make directory hierarchy |
nkeynes@491 | 3 | # Author: Noah Friedman <friedman@prep.ai.mit.edu> |
nkeynes@491 | 4 | # Created: 1993-05-16 |
nkeynes@491 | 5 | # Public domain |
nkeynes@491 | 6 | |
nkeynes@491 | 7 | errstatus=0 |
nkeynes@491 | 8 | dirmode="" |
nkeynes@491 | 9 | |
nkeynes@491 | 10 | usage="\ |
nkeynes@491 | 11 | Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." |
nkeynes@491 | 12 | |
nkeynes@491 | 13 | # process command line arguments |
nkeynes@491 | 14 | while test $# -gt 0 ; do |
nkeynes@491 | 15 | case $1 in |
nkeynes@491 | 16 | -h | --help | --h*) # -h for help |
nkeynes@491 | 17 | echo "$usage" 1>&2 |
nkeynes@491 | 18 | exit 0 |
nkeynes@491 | 19 | ;; |
nkeynes@491 | 20 | -m) # -m PERM arg |
nkeynes@491 | 21 | shift |
nkeynes@491 | 22 | test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } |
nkeynes@491 | 23 | dirmode=$1 |
nkeynes@491 | 24 | shift |
nkeynes@491 | 25 | ;; |
nkeynes@491 | 26 | --) # stop option processing |
nkeynes@491 | 27 | shift |
nkeynes@491 | 28 | break |
nkeynes@491 | 29 | ;; |
nkeynes@491 | 30 | -*) # unknown option |
nkeynes@491 | 31 | echo "$usage" 1>&2 |
nkeynes@491 | 32 | exit 1 |
nkeynes@491 | 33 | ;; |
nkeynes@491 | 34 | *) # first non-opt arg |
nkeynes@491 | 35 | break |
nkeynes@491 | 36 | ;; |
nkeynes@491 | 37 | esac |
nkeynes@491 | 38 | done |
nkeynes@491 | 39 | |
nkeynes@491 | 40 | for file |
nkeynes@491 | 41 | do |
nkeynes@491 | 42 | if test -d "$file"; then |
nkeynes@491 | 43 | shift |
nkeynes@491 | 44 | else |
nkeynes@491 | 45 | break |
nkeynes@491 | 46 | fi |
nkeynes@491 | 47 | done |
nkeynes@491 | 48 | |
nkeynes@491 | 49 | case $# in |
nkeynes@491 | 50 | 0) exit 0 ;; |
nkeynes@491 | 51 | esac |
nkeynes@491 | 52 | |
nkeynes@491 | 53 | case $dirmode in |
nkeynes@491 | 54 | '') |
nkeynes@491 | 55 | if mkdir -p -- . 2>/dev/null; then |
nkeynes@491 | 56 | echo "mkdir -p -- $*" |
nkeynes@491 | 57 | exec mkdir -p -- "$@" |
nkeynes@491 | 58 | fi |
nkeynes@491 | 59 | ;; |
nkeynes@491 | 60 | *) |
nkeynes@491 | 61 | if mkdir -m "$dirmode" -p -- . 2>/dev/null; then |
nkeynes@491 | 62 | echo "mkdir -m $dirmode -p -- $*" |
nkeynes@491 | 63 | exec mkdir -m "$dirmode" -p -- "$@" |
nkeynes@491 | 64 | fi |
nkeynes@491 | 65 | ;; |
nkeynes@491 | 66 | esac |
nkeynes@491 | 67 | |
nkeynes@491 | 68 | for file |
nkeynes@491 | 69 | do |
nkeynes@491 | 70 | set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` |
nkeynes@491 | 71 | shift |
nkeynes@491 | 72 | |
nkeynes@491 | 73 | pathcomp= |
nkeynes@491 | 74 | for d |
nkeynes@491 | 75 | do |
nkeynes@491 | 76 | pathcomp="$pathcomp$d" |
nkeynes@491 | 77 | case $pathcomp in |
nkeynes@491 | 78 | -*) pathcomp=./$pathcomp ;; |
nkeynes@491 | 79 | esac |
nkeynes@491 | 80 | |
nkeynes@491 | 81 | if test ! -d "$pathcomp"; then |
nkeynes@491 | 82 | echo "mkdir $pathcomp" |
nkeynes@491 | 83 | |
nkeynes@491 | 84 | mkdir "$pathcomp" || lasterr=$? |
nkeynes@491 | 85 | |
nkeynes@491 | 86 | if test ! -d "$pathcomp"; then |
nkeynes@491 | 87 | errstatus=$lasterr |
nkeynes@491 | 88 | else |
nkeynes@491 | 89 | if test ! -z "$dirmode"; then |
nkeynes@491 | 90 | echo "chmod $dirmode $pathcomp" |
nkeynes@491 | 91 | lasterr="" |
nkeynes@491 | 92 | chmod "$dirmode" "$pathcomp" || lasterr=$? |
nkeynes@491 | 93 | |
nkeynes@491 | 94 | if test ! -z "$lasterr"; then |
nkeynes@491 | 95 | errstatus=$lasterr |
nkeynes@491 | 96 | fi |
nkeynes@491 | 97 | fi |
nkeynes@491 | 98 | fi |
nkeynes@491 | 99 | fi |
nkeynes@491 | 100 | |
nkeynes@491 | 101 | pathcomp="$pathcomp/" |
nkeynes@491 | 102 | done |
nkeynes@491 | 103 | done |
nkeynes@491 | 104 | |
nkeynes@491 | 105 | exit $errstatus |
nkeynes@491 | 106 | |
nkeynes@491 | 107 | # Local Variables: |
nkeynes@491 | 108 | # mode: shell-script |
nkeynes@491 | 109 | # sh-indentation: 2 |
nkeynes@491 | 110 | # End: |
nkeynes@491 | 111 | # mkinstalldirs ends here |
.