From: Paul Eggert Date: Sat, 29 Sep 2001 05:50:16 +0000 (+0000) Subject: Use "mkdir -p" if it works, as that fixes bugs when making file names X-Git-Tag: Release-1-5b~137 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=24a61b63c516e7713f7da1efe2d304ffe23e246a;p=thirdparty%2Fautomake.git Use "mkdir -p" if it works, as that fixes bugs when making file names with unusual characters. Quote chmod arg "$dirmode", in case it contains white space. Incorporate the following change from autoconf mkinstalldirs: 1999-04-10 Ben Elliston * mkinstalldirs: Add `-m' flag to specify the mode of a newly created directory. Add command line usage and `-h', `--help' options. Contributed by Jeff Garzik. --- diff --git a/lib/mkinstalldirs b/lib/mkinstalldirs index 21224db85..8e7cec4c2 100755 --- a/lib/mkinstalldirs +++ b/lib/mkinstalldirs @@ -4,9 +4,46 @@ # Created: 1993-05-16 # Public domain -# $Id: mkinstalldirs,v 1.7 1999/01/14 11:59:35 tromey Exp $ +# $Id: mkinstalldirs,v 1.8 2001/09/29 05:50:16 eggert Exp $ errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case "${1}" in + -h | --help | --h* ) # -h for help + echo "${usage}" 1>&2; exit 0 ;; + -m ) # -m PERM arg + shift + test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } + dirmode="${1}" + shift ;; + -- ) shift; break ;; # stop option processing + -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option + * ) break ;; # first non-opt arg + esac +done + +case $# in +0) exit 0 ;; +esac + +case $dirmode in +'') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi ;; +*) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi ;; +esac for file do @@ -22,13 +59,24 @@ do esac if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" - mkdir "$pathcomp" || lasterr=$? + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? - if test ! -d "$pathcomp"; then - errstatus=$lasterr - fi + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi fi pathcomp="$pathcomp/" @@ -37,4 +85,8 @@ done exit $errstatus +# Local Variables: +# mode: shell-script +# sh-indentation: 3 +# End: # mkinstalldirs ends here