Index: third_party/libxml/mkinstalldirs |
diff --git a/third_party/libxml/mkinstalldirs b/third_party/libxml/mkinstalldirs |
old mode 100644 |
new mode 100755 |
index 8ab885ec92d9e1ce51e4bca32745b24c2bf0a596..4191a45dbd72ecd24c25b45a53e94ea0a4b5baf7 |
--- a/third_party/libxml/mkinstalldirs |
+++ b/third_party/libxml/mkinstalldirs |
@@ -1,29 +1,59 @@ |
#! /bin/sh |
# mkinstalldirs --- make directory hierarchy |
-# Author: Noah Friedman <friedman@prep.ai.mit.edu> |
-# Created: 1993-05-16 |
-# Public domain |
+scriptversion=2009-04-28.21; # UTC |
+ |
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu> |
+# Created: 1993-05-16 |
+# Public domain. |
+# |
+# This file is maintained in Automake, please report |
+# bugs to <bug-automake@gnu.org> or send patches to |
+# <automake-patches@gnu.org>. |
+ |
+nl=' |
+' |
+IFS=" "" $nl" |
errstatus=0 |
-dirmode="" |
+dirmode= |
usage="\ |
-Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." |
+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 <bug-automake@gnu.org>." |
# 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 |
+ case $1 in |
+ -h | --help | --h*) # -h for help |
+ echo "$usage" |
+ exit $? |
+ ;; |
+ -m) # -m PERM arg |
+ shift |
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } |
+ dirmode=$1 |
+ shift |
+ ;; |
+ --version) |
+ echo "$0 $scriptversion" |
+ exit $? |
+ ;; |
+ --) # stop option processing |
+ shift |
+ break |
+ ;; |
+ -*) # unknown option |
+ echo "$usage" 1>&2 |
+ exit 1 |
+ ;; |
+ *) # first non-opt arg |
+ break |
+ ;; |
+ esac |
done |
for file |
@@ -36,64 +66,97 @@ do |
done |
case $# in |
-0) exit 0 ;; |
+ 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 |
- 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 ;; |
+ '') |
+ 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 --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 |
for file |
do |
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` |
- shift |
- |
- pathcomp= |
- for d |
- do |
- pathcomp="$pathcomp$d" |
- case "$pathcomp" in |
- -* ) pathcomp=./$pathcomp ;; |
- esac |
- |
- if test ! -d "$pathcomp"; then |
- echo "mkdir $pathcomp" |
- |
- mkdir "$pathcomp" || lasterr=$? |
- |
- if test ! -d "$pathcomp"; then |
- errstatus=$lasterr |
- else |
- if test ! -z "$dirmode"; then |
- echo "chmod $dirmode $pathcomp" |
- |
- lasterr="" |
- chmod "$dirmode" "$pathcomp" || lasterr=$? |
- |
- if test ! -z "$lasterr"; then |
- errstatus=$lasterr |
- fi |
+ case $file in |
+ /*) pathcomp=/ ;; |
+ *) pathcomp= ;; |
+ esac |
+ oIFS=$IFS |
+ IFS=/ |
+ set fnord $file |
+ shift |
+ IFS=$oIFS |
+ |
+ for d |
+ do |
+ test "x$d" = x && continue |
+ |
+ pathcomp=$pathcomp$d |
+ case $pathcomp in |
+ -*) pathcomp=./$pathcomp ;; |
+ esac |
+ |
+ if test ! -d "$pathcomp"; then |
+ echo "mkdir $pathcomp" |
+ |
+ mkdir "$pathcomp" || lasterr=$? |
+ |
+ if test ! -d "$pathcomp"; then |
+ errstatus=$lasterr |
+ else |
+ if test ! -z "$dirmode"; then |
+ echo "chmod $dirmode $pathcomp" |
+ lasterr= |
+ chmod "$dirmode" "$pathcomp" || lasterr=$? |
+ |
+ if test ! -z "$lasterr"; then |
+ errstatus=$lasterr |
fi |
fi |
- fi |
+ fi |
+ fi |
- pathcomp="$pathcomp/" |
- done |
+ pathcomp=$pathcomp/ |
+ done |
done |
exit $errstatus |
# Local Variables: |
# mode: shell-script |
-# sh-indentation: 3 |
+# sh-indentation: 2 |
+# eval: (add-hook 'write-file-hooks 'time-stamp) |
+# time-stamp-start: "scriptversion=" |
+# time-stamp-format: "%:y-%02m-%02d.%02H" |
+# time-stamp-time-zone: "UTC" |
+# time-stamp-end: "; # UTC" |
# End: |
-# mkinstalldirs ends here |