#! /bin/sh
#
# mkdirs - a work-alike for `mkdir -p'
#
# Chet Ramey
# chet@po.cwru.edu

# Copyright (C) 1996-2002 Free Software Foundation, Inc.
#
#   This program 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 3 of the License, or
#   (at your option) any later version.
#
#   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.

for dir
do

	test -d "$dir" && continue

	tomake=$dir
	while test -n "$dir" ; do
		# dir=${dir%/*}
		# dir=`expr "$dir" ':' '\(/.*\)/[^/]*'`
		if dir=`expr "$dir" ':' '\(.*\)/[^/]*'`; then
			tomake="$dir $tomake"
		else
			dir=
		fi
	done

	for d in $tomake
	do
		test -d "$d" && continue
		echo mkdir "$d"
		mkdir "$d"
	done
done

exit 0
