1136644Sache#! /bin/sh 2136644Sache# mkinstalldirs --- make directory hierarchy 3136644Sache# Author: Noah Friedman <friedman@prep.ai.mit.edu> 4136644Sache# Created: 1993-05-16 5136644Sache# Public domain 6136644Sache 7136644Sacheerrstatus=0 8136644Sachedirmode="" 9136644Sache 10136644Sacheusage="\ 11136644SacheUsage: mkinstalldirs [-h] [--help] [-m mode] dir ..." 12136644Sache 13136644Sache# process command line arguments 14136644Sachewhile test $# -gt 0 ; do 15136644Sache case $1 in 16136644Sache -h | --help | --h*) # -h for help 17136644Sache echo "$usage" 1>&2 18136644Sache exit 0 19136644Sache ;; 20136644Sache -m) # -m PERM arg 21136644Sache shift 22136644Sache test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } 23136644Sache dirmode=$1 24136644Sache shift 25136644Sache ;; 26136644Sache --) # stop option processing 27136644Sache shift 28136644Sache break 29136644Sache ;; 30136644Sache -*) # unknown option 31136644Sache echo "$usage" 1>&2 32136644Sache exit 1 33136644Sache ;; 34136644Sache *) # first non-opt arg 35136644Sache break 36136644Sache ;; 37136644Sache esac 38136644Sachedone 39136644Sache 40136644Sachefor file 41136644Sachedo 42136644Sache if test -d "$file"; then 43136644Sache shift 44136644Sache else 45136644Sache break 46136644Sache fi 47136644Sachedone 48136644Sache 49136644Sachecase $# in 50136644Sache 0) exit 0 ;; 51136644Sacheesac 52136644Sache 53136644Sachecase $dirmode in 54136644Sache '') 55136644Sache if mkdir -p -- . 2>/dev/null; then 56136644Sache echo "mkdir -p -- $*" 57136644Sache exec mkdir -p -- "$@" 58136644Sache fi 59136644Sache ;; 60136644Sache *) 61136644Sache if mkdir -m "$dirmode" -p -- . 2>/dev/null; then 62136644Sache echo "mkdir -m $dirmode -p -- $*" 63136644Sache exec mkdir -m "$dirmode" -p -- "$@" 64136644Sache fi 65136644Sache ;; 66136644Sacheesac 67136644Sache 68136644Sachefor file 69136644Sachedo 70136644Sache set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` 71136644Sache shift 72136644Sache 73136644Sache pathcomp= 74136644Sache for d 75136644Sache do 76136644Sache pathcomp="$pathcomp$d" 77136644Sache case $pathcomp in 78136644Sache -*) pathcomp=./$pathcomp ;; 79136644Sache esac 80136644Sache 81136644Sache if test ! -d "$pathcomp"; then 82136644Sache echo "mkdir $pathcomp" 83136644Sache 84136644Sache mkdir "$pathcomp" || lasterr=$? 85136644Sache 86136644Sache if test ! -d "$pathcomp"; then 87136644Sache errstatus=$lasterr 88136644Sache else 89136644Sache if test ! -z "$dirmode"; then 90136644Sache echo "chmod $dirmode $pathcomp" 91136644Sache lasterr="" 92136644Sache chmod "$dirmode" "$pathcomp" || lasterr=$? 93136644Sache 94136644Sache if test ! -z "$lasterr"; then 95136644Sache errstatus=$lasterr 96136644Sache fi 97136644Sache fi 98136644Sache fi 99136644Sache fi 100136644Sache 101136644Sache pathcomp="$pathcomp/" 102136644Sache done 103136644Sachedone 104136644Sache 105136644Sacheexit $errstatus 106136644Sache 107136644Sache# Local Variables: 108136644Sache# mode: shell-script 109136644Sache# sh-indentation: 2 110136644Sache# End: 111136644Sache# mkinstalldirs ends here 112