X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=config%2Fmkinstalldirs;h=5d26a485f11223c19546f3e02ce59d201a5afe48;hb=cd3bee968885a85671cad267e142aad74076b5e2;hp=8065dadd90aa58b4de3feac4287651bb73ff26ba;hpb=4aba32dea7c68f676f8df37c55b8b4c4df14fdd5;p=gnulib.git diff --git a/config/mkinstalldirs b/config/mkinstalldirs index 8065dadd9..5d26a485f 100644 --- a/config/mkinstalldirs +++ b/config/mkinstalldirs @@ -1,10 +1,15 @@ #! /bin/sh # mkinstalldirs --- make directory hierarchy + +scriptversion=2005-02-02.21 + # Original author: Noah Friedman # Created: 1993-05-16 # Public domain. - -scriptversion=2003-06-14.23 +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . errstatus=0 dirmode="" @@ -14,14 +19,15 @@ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... Create each directory DIR (with mode MODE, if specified), including all leading file name components. -" + +Report bugs to ." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" - exit 0 + exit $? ;; -m) # -m PERM arg shift @@ -31,7 +37,7 @@ while test $# -gt 0 ; do ;; --version) echo "$0 $scriptversion" - exit 0 + exit $? ;; --) # stop option processing shift @@ -60,17 +66,37 @@ case $# in 0) exit 0 ;; esac +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') - if mkdir -p -- . 2>/dev/null; then + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version fi ;; *) - if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done fi ;; esac