1a850946eSmrg#! /bin/sh 2a850946eSmrg# mkinstalldirs --- make directory hierarchy 3a850946eSmrg# Author: Noah Friedman <friedman@prep.ai.mit.edu> 4a850946eSmrg# Created: 1993-05-16 5a850946eSmrg# Public domain 6a850946eSmrg 7a850946eSmrgerrstatus=0 8a850946eSmrgdirmode="" 9a850946eSmrg 10a850946eSmrgusage="\ 11a850946eSmrgUsage: mkinstalldirs [-h] [--help] [-m mode] dir ..." 12a850946eSmrg 13a850946eSmrg# process command line arguments 14a850946eSmrgwhile test $# -gt 0 ; do 15a850946eSmrg case $1 in 16a850946eSmrg -h | --help | --h*) # -h for help 17a850946eSmrg echo "$usage" 1>&2 18a850946eSmrg exit 0 19a850946eSmrg ;; 20a850946eSmrg -m) # -m PERM arg 21a850946eSmrg shift 22a850946eSmrg test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } 23a850946eSmrg dirmode=$1 24a850946eSmrg shift 25a850946eSmrg ;; 26a850946eSmrg --) # stop option processing 27a850946eSmrg shift 28a850946eSmrg break 29a850946eSmrg ;; 30a850946eSmrg -*) # unknown option 31a850946eSmrg echo "$usage" 1>&2 32a850946eSmrg exit 1 33a850946eSmrg ;; 34a850946eSmrg *) # first non-opt arg 35a850946eSmrg break 36a850946eSmrg ;; 37a850946eSmrg esac 38a850946eSmrgdone 39a850946eSmrg 40a850946eSmrgfor file 41a850946eSmrgdo 42a850946eSmrg if test -d "$file"; then 43a850946eSmrg shift 44a850946eSmrg else 45a850946eSmrg break 46a850946eSmrg fi 47a850946eSmrgdone 48a850946eSmrg 49a850946eSmrgcase $# in 50a850946eSmrg 0) exit 0 ;; 51a850946eSmrgesac 52a850946eSmrg 53a850946eSmrgcase $dirmode in 54a850946eSmrg '') 55a850946eSmrg if mkdir -p -- . 2>/dev/null; then 56a850946eSmrg echo "mkdir -p -- $*" 57a850946eSmrg exec mkdir -p -- "$@" 58a850946eSmrg fi 59a850946eSmrg ;; 60a850946eSmrg *) 61a850946eSmrg if mkdir -m "$dirmode" -p -- . 2>/dev/null; then 62a850946eSmrg echo "mkdir -m $dirmode -p -- $*" 63a850946eSmrg exec mkdir -m "$dirmode" -p -- "$@" 64a850946eSmrg fi 65a850946eSmrg ;; 66a850946eSmrgesac 67a850946eSmrg 68a850946eSmrgfor file 69a850946eSmrgdo 70a850946eSmrg set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` 71a850946eSmrg shift 72a850946eSmrg 73a850946eSmrg pathcomp= 74a850946eSmrg for d 75a850946eSmrg do 76a850946eSmrg pathcomp="$pathcomp$d" 77a850946eSmrg case $pathcomp in 78a850946eSmrg -*) pathcomp=./$pathcomp ;; 79a850946eSmrg esac 80a850946eSmrg 81a850946eSmrg if test ! -d "$pathcomp"; then 82a850946eSmrg echo "mkdir $pathcomp" 83a850946eSmrg 84a850946eSmrg mkdir "$pathcomp" || lasterr=$? 85a850946eSmrg 86a850946eSmrg if test ! -d "$pathcomp"; then 87a850946eSmrg errstatus=$lasterr 88a850946eSmrg else 89a850946eSmrg if test ! -z "$dirmode"; then 90a850946eSmrg echo "chmod $dirmode $pathcomp" 91a850946eSmrg lasterr="" 92a850946eSmrg chmod "$dirmode" "$pathcomp" || lasterr=$? 93a850946eSmrg 94a850946eSmrg if test ! -z "$lasterr"; then 95a850946eSmrg errstatus=$lasterr 96a850946eSmrg fi 97a850946eSmrg fi 98a850946eSmrg fi 99a850946eSmrg fi 100a850946eSmrg 101a850946eSmrg pathcomp="$pathcomp/" 102a850946eSmrg done 103a850946eSmrgdone 104a850946eSmrg 105a850946eSmrgexit $errstatus 106a850946eSmrg 107a850946eSmrg# Local Variables: 108a850946eSmrg# mode: shell-script 109a850946eSmrg# sh-indentation: 2 110a850946eSmrg# End: 111a850946eSmrg# mkinstalldirs ends here 112