#!/bin/sh
# @(#)mkdir.sh 1.4 05/05/04 Copyright 1998 J. Schilling
###########################################################################
# Written 1998-2005 by J. Schilling
###########################################################################
#
# Schily Makefile slottable source high level mkdir -p command
# Creates TARGETS/ and needed content
#
# Replacement for mkdir -p ... functionality.
#
# mkdir(1) on BSD-4.3, NeXT Step <= 3.x and similar don't accept the -p flag
#
###########################################################################
# Copyright Jörg Schilling. All rights reserved.
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only.
# See the file CDDL.Schily.txt in this distribution or
# http://opensource.org/licenses/cddl1.php for details.
###########################################################################
dop=false
doT=false
ok=true
while test $# -ne 0; do
case $1 in
-p)
dop=true
shift
;;
-T)
doT=true
shift
;;
-*)
echo "Unknown Option '$1'" 1>&2
ok=false
break
;;
*)
break
;;
esac
done
if [ $doT = true -a $dop = false ]; then
echo "Option -T needs -p in addition" 1>&2
ok=false
fi
if [ $# -lt 1 ]; then
echo "Missing <dir> parameter" 1>&2
fi
if [ $# -lt 1 -o $ok = false ]; then
echo "Usage: $0 [-p] [-T] dir ...."
echo "Options:"
echo " -p Create <dir> and including all non existing parent directories"
echo " -T Add Schily Makefile directory template files"
exit 1
fi
if [ $doT = true -a ."$SRCROOT" = . ]; then
SRCROOT=.
loop=1
while [ $loop -lt 100 ]; do
if [ ! -d $SRCROOT ]; then
# Abort on ENAMETOOLONG
break
fi
if [ -r $SRCROOT/RULES/rules.top ]; then
break
fi
if [ "$SRCROOT" = . ]; then
SRCROOT=".."
else
SRCROOT="$SRCROOT/.."
fi
loop="`expr $loop + 1`"
done
if [ ! -r $SRCROOT/RULES/rules.top ]; then
echo "Cannot find SRCROOT directory" 1>&2
exit 1
fi
export SRCROOT
fi
if [ $dop = false ]; then
for i in "$@"; do
mkdir "$i"
done
else
for i in "$@"; do
# Don't use ${i:-.}, BSD4.3 doen't like it
#
fullname="$i"
if [ ."$i" = . ]; then
fullname=.
fi
if [ "$fullname" = . ]; then
continue
fi
dirname=`expr \
"$fullname/" : '\(/\)/*[^/]*//*$' \| \
"$fullname/" : '\(.*[^/]\)//*[^/][^/]*//*$' \| \
.`
if [ $doT = false ]; then
sh $0 -p "$dirname"
if [ ! -d "$i" ]; then
mkdir "$i"
fi
continue
else
sh $0 -p -T "$dirname"
fi
if [ ! -d "$dirname"/TARGETS ]; then
mkdir "$dirname"/TARGETS
fi
if [ ! -r "$dirname"/TARGETS/__slot ]; then
echo 'This file enables the "slot" feature of the Schily SING makefile system' > "$dirname"/TARGETS/__slot
fi
dirbase=`echo "$i" | sed -e 's,/*$,,;s,.*/\([^/]*\),\1,'`
if [ ! -r "$dirname"/TARGETS/55"$dirbase" ]; then
: > "$dirname"/TARGETS/55"$dirbase"
fi
if [ ! -r "$dirname"/Makefile ]; then
srcroot=`echo "$dirname" | sed -e 's,[^/]*,..,g'`
srcroot=`echo "$SRCROOT/$srcroot" | sed -e 's,^\./,,'`
echo '#ident %'W'% %'E'% %'Q'%' > "$dirname"/Makefile
echo '###########################################################################' >> "$dirname"/Makefile
echo '# Sample makefile for sub directory makes' >> "$dirname"/Makefile
echo '###########################################################################' >> "$dirname"/Makefile
echo "SRCROOT= $srcroot" >> "$dirname"/Makefile
echo 'RULESDIR= RULES' >> "$dirname"/Makefile
echo 'include $(SRCROOT)/$(RULESDIR)/rules.top' >> "$dirname"/Makefile
echo '###########################################################################' >> "$dirname"/Makefile
echo >> "$dirname"/Makefile
echo '###########################################################################' >> "$dirname"/Makefile
echo 'include $(SRCROOT)/$(RULESDIR)/rules.dir' >> "$dirname"/Makefile
echo '###########################################################################' >> "$dirname"/Makefile
fi
if [ ! -d "$i" ]; then
mkdir "$i"
fi
done
fi
syntax highlighted by Code2HTML, v. 0.9.1