mkinstalldirs revision 130561
1219820Sjeff#! /bin/sh 2219820Sjeff# mkinstalldirs --- make directory hierarchy 3219820Sjeff# Author: Noah Friedman <friedman@prep.ai.mit.edu> 4219820Sjeff# Created: 1993-05-16 5219820Sjeff# Public domain 6219820Sjeff 7219820Sjefferrstatus=0 8219820Sjeffdirmode="" 9219820Sjeff 10219820Sjeffusage="\ 11219820SjeffUsage: mkinstalldirs [-h] [--help] [-m mode] dir ..." 12219820Sjeff 13219820Sjeff# process command line arguments 14219820Sjeffwhile test $# -gt 0 ; do 15219820Sjeff case $1 in 16219820Sjeff -h | --help | --h*) # -h for help 17219820Sjeff echo "$usage" 1>&2 18219820Sjeff exit 0 19219820Sjeff ;; 20219820Sjeff -m) # -m PERM arg 21219820Sjeff shift 22219820Sjeff test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } 23219820Sjeff dirmode=$1 24219820Sjeff shift 25219820Sjeff ;; 26219820Sjeff --) # stop option processing 27219820Sjeff shift 28219820Sjeff break 29219820Sjeff ;; 30219820Sjeff -*) # unknown option 31219820Sjeff echo "$usage" 1>&2 32219820Sjeff exit 1 33219820Sjeff ;; 34219820Sjeff *) # first non-opt arg 35219820Sjeff break 36219820Sjeff ;; 37219820Sjeff esac 38219820Sjeffdone 39219820Sjeff 40219820Sjefffor file 41219820Sjeffdo 42219820Sjeff if test -d "$file"; then 43219820Sjeff shift 44219820Sjeff else 45219820Sjeff break 46219820Sjeff fi 47219820Sjeffdone 48219820Sjeff 49219820Sjeffcase $# in 50219820Sjeff 0) exit 0 ;; 51219820Sjeffesac 52219820Sjeff 53219820Sjeffcase $dirmode in 54219820Sjeff '') 55219820Sjeff if mkdir -p -- . 2>/dev/null; then 56219820Sjeff echo "mkdir -p -- $*" 57219820Sjeff exec mkdir -p -- "$@" 58219820Sjeff fi 59219820Sjeff ;; 60219820Sjeff *) 61219820Sjeff if mkdir -m "$dirmode" -p -- . 2>/dev/null; then 62219820Sjeff echo "mkdir -m $dirmode -p -- $*" 63219820Sjeff exec mkdir -m "$dirmode" -p -- "$@" 64219820Sjeff fi 65219820Sjeff ;; 66219820Sjeffesac 67219820Sjeff 68219820Sjefffor file 69219820Sjeffdo 70219820Sjeff set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` 71219820Sjeff shift 72219820Sjeff 73219820Sjeff pathcomp= 74219820Sjeff for d 75219820Sjeff do 76219820Sjeff pathcomp="$pathcomp$d" 77219820Sjeff case $pathcomp in 78219820Sjeff -*) pathcomp=./$pathcomp ;; 79219820Sjeff esac 80219820Sjeff 81219820Sjeff if test ! -d "$pathcomp"; then 82219820Sjeff echo "mkdir $pathcomp" 83219820Sjeff 84219820Sjeff mkdir "$pathcomp" || lasterr=$? 85219820Sjeff 86219820Sjeff if test ! -d "$pathcomp"; then 87219820Sjeff errstatus=$lasterr 88219820Sjeff else 89219820Sjeff if test ! -z "$dirmode"; then 90219820Sjeff echo "chmod $dirmode $pathcomp" 91219820Sjeff lasterr="" 92219820Sjeff chmod "$dirmode" "$pathcomp" || lasterr=$? 93219820Sjeff 94219820Sjeff if test ! -z "$lasterr"; then 95219820Sjeff errstatus=$lasterr 96219820Sjeff fi 97219820Sjeff fi 98219820Sjeff fi 99219820Sjeff fi 100219820Sjeff 101219820Sjeff pathcomp="$pathcomp/" 102219820Sjeff done 103219820Sjeffdone 104219820Sjeff 105219820Sjeffexit $errstatus 106219820Sjeff 107219820Sjeff# Local Variables: 108219820Sjeff# mode: shell-script 109219820Sjeff# sh-indentation: 2 110219820Sjeff# End: 111219820Sjeff# mkinstalldirs ends here 112219820Sjeff