2005-06-29 Alexandre Duret-Lutz <adl@gnu.org>
+ * lib/mkinstalldirs: Fix support for directory name with spaces if
+ `mkdir -p' does not work.
+ * tests/Makefile.am (TESTS): Add mkinst3.test.
+ * tests/mkinst3.test: New file.
+ Report from Noah Friedman.
+
* doc/automake.texi (Include, Extending aclocal): Typos.
Report from Karl Berry.
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
-scriptversion=2005-05-14.22
+scriptversion=2005-06-29.22
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
# <automake-patches@gnu.org>.
errstatus=0
-dirmode=""
+dirmode=
usage="\
Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
for file
do
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+ case $file in
+ /*) pathcomp=/ ;;
+ *) pathcomp= ;;
+ esac
+ oIFS=$IFS
+ IFS=/
+ set fnord $file
shift
+ IFS=$oIFS
- pathcomp=
for d
do
- pathcomp="$pathcomp$d"
+ test "x$d" = x && continue
+
+ pathcomp=$pathcomp$d
case $pathcomp in
-*) pathcomp=./$pathcomp ;;
esac
else
if test ! -z "$dirmode"; then
echo "chmod $dirmode $pathcomp"
- lasterr=""
+ lasterr=
chmod "$dirmode" "$pathcomp" || lasterr=$?
if test ! -z "$lasterr"; then
fi
fi
- pathcomp="$pathcomp/"
+ pathcomp=$pathcomp/
done
done
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2005 Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Automake is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Automake; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# Test mkinstalldirs with spaces in directory names.
+
+. ./defs || exit 1
+
+set -e
+
+# Make sure the directory we will create can be created...
+mkdir '~a b' || exit 77
+mkdir '~a b/-x y' || exit 77
+rm -rf '~a b'
+
+cp "$testsrcdir/../lib/mkinstalldirs" .
+
+# Test mkinstalldirs with the installed mkdir.
+
+./mkinstalldirs '~a b/-x y'
+test -d '~a b/-x y'
+rm -rf '~a b'
+
+# Trick mkinstalldirs into thinking mkdir does not support -p.
+
+cat >mkdir <<'EOF'
+#!/bin/sh
+case "$*" in
+ *-p*) exit 1;;
+esac
+PATH=$AM_PATH
+export PATH
+exec mkdir "$@"
+EOF
+
+chmod +x mkdir
+AM_PATH=$PATH
+export AM_PATH
+PATH=`pwd`:$PATH
+export PATH
+
+# Test mkinstalldirs without mkdir -p.
+
+./mkinstalldirs '~a b/-x y'
+test -d '~a b/-x y'
+rm -rf '~a b'
+
+./mkinstalldirs "`pwd`///~a b//-x y"
+test -d "`pwd`/~a b/-x y"
+rm -rf '~a b'