#! /bin/sh # $XConsortium: mkdirhier.sh,v 1.7 94/03/24 15:46:34 gildea Exp $ # Courtesy of Paul Eggert # # Modified by QingLong for portability. 24-02-97. # newline=' ' IFS=$newline # # WARNING! Some ancient shells do not understand `:=' and `:-' expansion. # Use just `=' instead of `:=' if you have lame one. #: ${MKDIR:=mkdir} ${TR:=tr} # if test -z "${MKDIR-}" ; then MKDIR=mkdir fi if test -z "${TR-}" ; then TR=tr fi case ${1--} in -*) echo >&2 "mkdir-p: usage: mkdir-p directory ..." exit 1 esac status="" for directory do case $directory in '') echo >&2 "mkdir-p: empty directory name" status="1" continue ;; *"$newline"*) echo >&2 "mkdir-p: directory name contains a newline: \`\`$directory''" status="1" continue ;; ///*) prefix="/" # See POSIX 2.3 "path". ;; //*) prefix="//" ;; /*) prefix="/" ;; -*) prefix="./" ;; *) prefix="" esac # IFS=/ set x $directory # case $2 in */*) # IFS parsing is broken IFS=' ' set x `echo $directory | ${TR} / ' '` ;; esac # IFS=$newline shift # for filename do path="$prefix$filename" prefix="$path/" shift # test -d "$path" || \ { paths=$path for filename do if test "$filename" != "." ; then path="$path/$filename" paths="$paths$newline$path" fi done # ${MKDIR} $paths || status=$? # break } done done exit $status