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