1566738d7Smrg#! /bin/sh 2566738d7Smrg# mkinstalldirs --- make directory hierarchy 3566738d7Smrg# Author: Noah Friedman <friedman@prep.ai.mit.edu> 4566738d7Smrg# Created: 1993-05-16 5566738d7Smrg# Public domain 6566738d7Smrg 7566738d7Smrgerrstatus=0 8566738d7Smrgdirmode="" 9566738d7Smrg 10566738d7Smrgusage="\ 11566738d7SmrgUsage: mkinstalldirs [-h] [--help] [-m mode] dir ..." 12566738d7Smrg 13566738d7Smrg# process command line arguments 14566738d7Smrgwhile test $# -gt 0 ; do 15566738d7Smrg case $1 in 16566738d7Smrg -h | --help | --h*) # -h for help 17566738d7Smrg echo "$usage" 1>&2 18566738d7Smrg exit 0 19566738d7Smrg ;; 20566738d7Smrg -m) # -m PERM arg 21566738d7Smrg shift 22566738d7Smrg test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } 23566738d7Smrg dirmode=$1 24566738d7Smrg shift 25566738d7Smrg ;; 26566738d7Smrg --) # stop option processing 27566738d7Smrg shift 28566738d7Smrg break 29566738d7Smrg ;; 30566738d7Smrg -*) # unknown option 31566738d7Smrg echo "$usage" 1>&2 32566738d7Smrg exit 1 33566738d7Smrg ;; 34566738d7Smrg *) # first non-opt arg 35566738d7Smrg break 36566738d7Smrg ;; 37566738d7Smrg esac 38566738d7Smrgdone 39566738d7Smrg 40566738d7Smrgfor file 41566738d7Smrgdo 42566738d7Smrg if test -d "$file"; then 43566738d7Smrg shift 44566738d7Smrg else 45566738d7Smrg break 46566738d7Smrg fi 47566738d7Smrgdone 48566738d7Smrg 49566738d7Smrgcase $# in 50566738d7Smrg 0) exit 0 ;; 51566738d7Smrgesac 52566738d7Smrg 53566738d7Smrgcase $dirmode in 54566738d7Smrg '') 55566738d7Smrg if mkdir -p -- . 2>/dev/null; then 56566738d7Smrg echo "mkdir -p -- $*" 57566738d7Smrg exec mkdir -p -- "$@" 58566738d7Smrg fi 59566738d7Smrg ;; 60566738d7Smrg *) 61566738d7Smrg if mkdir -m "$dirmode" -p -- . 2>/dev/null; then 62566738d7Smrg echo "mkdir -m $dirmode -p -- $*" 63566738d7Smrg exec mkdir -m "$dirmode" -p -- "$@" 64566738d7Smrg fi 65566738d7Smrg ;; 66566738d7Smrgesac 67566738d7Smrg 68566738d7Smrgfor file 69566738d7Smrgdo 70566738d7Smrg set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` 71566738d7Smrg shift 72566738d7Smrg 73566738d7Smrg pathcomp= 74566738d7Smrg for d 75566738d7Smrg do 76566738d7Smrg pathcomp="$pathcomp$d" 77566738d7Smrg case $pathcomp in 78566738d7Smrg -*) pathcomp=./$pathcomp ;; 79566738d7Smrg esac 80566738d7Smrg 81566738d7Smrg if test ! -d "$pathcomp"; then 82566738d7Smrg echo "mkdir $pathcomp" 83566738d7Smrg 84566738d7Smrg mkdir "$pathcomp" || lasterr=$? 85566738d7Smrg 86566738d7Smrg if test ! -d "$pathcomp"; then 87566738d7Smrg errstatus=$lasterr 88566738d7Smrg else 89566738d7Smrg if test ! -z "$dirmode"; then 90566738d7Smrg echo "chmod $dirmode $pathcomp" 91566738d7Smrg lasterr="" 92566738d7Smrg chmod "$dirmode" "$pathcomp" || lasterr=$? 93566738d7Smrg 94566738d7Smrg if test ! -z "$lasterr"; then 95566738d7Smrg errstatus=$lasterr 96566738d7Smrg fi 97566738d7Smrg fi 98566738d7Smrg fi 99566738d7Smrg fi 100566738d7Smrg 101566738d7Smrg pathcomp="$pathcomp/" 102566738d7Smrg done 103566738d7Smrgdone 104566738d7Smrg 105566738d7Smrgexit $errstatus 106566738d7Smrg 107566738d7Smrg# Local Variables: 108566738d7Smrg# mode: shell-script 109566738d7Smrg# sh-indentation: 2 110566738d7Smrg# End: 111566738d7Smrg# mkinstalldirs ends here 112