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