summaryrefslogtreecommitdiff
path: root/utils/mkdirhier
diff options
context:
space:
mode:
Diffstat (limited to 'utils/mkdirhier')
-rw-r--r--utils/mkdirhier/Makefile11
-rw-r--r--utils/mkdirhier/mkdirhier.sh34
2 files changed, 45 insertions, 0 deletions
diff --git a/utils/mkdirhier/Makefile b/utils/mkdirhier/Makefile
new file mode 100644
index 0000000000..f698112dbb
--- /dev/null
+++ b/utils/mkdirhier/Makefile
@@ -0,0 +1,11 @@
+TOP=../..
+include $(TOP)/mk/boilerplate.mk
+
+boot :: all
+
+SCRIPT_PROG=mkdirhier
+SCRIPT_OBJS=mkdirhier.sh
+INTERP=$(SHELL)
+CLEAN_FILES += $(SCRIPT_PROG)
+
+include $(TOP)/mk/target.mk
diff --git a/utils/mkdirhier/mkdirhier.sh b/utils/mkdirhier/mkdirhier.sh
new file mode 100644
index 0000000000..3ae24b3c6e
--- /dev/null
+++ b/utils/mkdirhier/mkdirhier.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+#
+# create a hierarchy of directories
+#
+# Based on Noah Friedman's mkinstalldirs..
+#
+errs=0
+
+for f in $*; do
+ parts=`echo ":$f" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+ path="";
+ for p in $parts; do
+ path="$path$p"
+ case "$path" in
+ -* ) path=./$path ;;
+ esac
+
+ if test ! -d "$path"; then
+ echo "mkdir $path" 1>&2
+
+ mkdir "$path" || lasterr=$?
+
+ if test ! -d "$path"; then
+ errs=$lasterr
+ fi
+ fi
+ path="$path/";
+ done;
+done
+
+exit $errs
+
+# end of story