diff options
author | heinz <heinz> | 2004-04-12 14:48:58 +0000 |
---|---|---|
committer | heinz <heinz> | 2004-04-12 14:48:58 +0000 |
commit | 9a3e974acbd8ceb094acf5286039f3a712046e6c (patch) | |
tree | 76062383831d2ffe2dc4aef541aa8ce07522e819 /bootstrap/files | |
parent | 3a2bac079a028b1f9bc05d098758a65aba51caf8 (diff) | |
download | pkgsrc-9a3e974acbd8ceb094acf5286039f3a712046e6c.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/files')
-rwxr-xr-x | bootstrap/files/mkdir-sh | 44 |
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 |