summaryrefslogtreecommitdiff
path: root/bootstrap
diff options
context:
space:
mode:
authorheinz <heinz@pkgsrc.org>2004-04-12 14:48:58 +0000
committerheinz <heinz@pkgsrc.org>2004-04-12 14:48:58 +0000
commit718ce4cb08551f393860fb44e7c5d1310f1207db (patch)
tree76062383831d2ffe2dc4aef541aa8ce07522e819 /bootstrap
parent59c83d8b24e3755f252d4668448603e353a9542b (diff)
downloadpkgsrc-718ce4cb08551f393860fb44e7c5d1310f1207db.tar.gz
Add script to work around stupid 'mkdir -p' on Unixware.
$ mkdir -p /tmp/foo ; echo $? 0 $ mkdir -p /tmp/foo ; echo $? 2 mkdir-sh calls 'mkdir' except when the target directory already exists.
Diffstat (limited to 'bootstrap')
-rwxr-xr-xbootstrap/files/mkdir-sh44
1 files changed, 44 insertions, 0 deletions
diff --git a/bootstrap/files/mkdir-sh b/bootstrap/files/mkdir-sh
new file mode 100755
index 00000000000..2156421f11e
--- /dev/null
+++ b/bootstrap/files/mkdir-sh
@@ -0,0 +1,44 @@
+#! /bin/sh
+# $NetBSD: mkdir-sh,v 1.1 2004/04/12 14:48:58 heinz Exp $
+#
+# workaround for the broken "mkdir -p" on Unixware
+
+MKDIRCMD=mkdir
+cmdargs="$@"
+
+# variable 'options' is unused
+for options in p m; do
+ if [ $# -lt 1 ]; then
+ ${MKDIRCMD} ${cmdargs}
+ exit $?
+ fi
+
+ case $1 in
+ -p) pathopt=-p;
+ shift;;
+ -m) modeopt="-m ${2}"
+ shift;
+ if [ $# -ne 0 ] ; then
+ shift
+ else
+ ${MKDIRCMD} ${cmdargs}
+ exit $?
+ fi
+ ;;
+ esac
+done
+
+if [ $# -gt 0 ]; then
+ while [ $# -gt 0 ]; do
+ if [ -z "${pathopt}" ]; then
+ ${MKDIRCMD} ${modeopt} -- "$1"
+ elif [ ! -d $1 ] ; then
+ ${MKDIRCMD} ${pathopt} ${modeopt} -- "$1"
+ else
+ : # directory exists, nothing to do
+ fi
+ shift
+ done
+else
+ ${MKDIRCMD} ${cmdargs}
+fi