The attached script fixes the problem by adding a conditional.  Its not
a beautiful solution, but the original has similar workarounds:

        ("# IFS parsing is broken")

Someone should forward upstream (whatever that is these days) and
beautify to taste.  The original complaint is at [1].

Justin

PS.  Greetings from Potsdam, NY, USA!

References

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=141347

#!/bin/sh
# $Xorg: mkdirhier.sh,v 1.3 2000/08/17 19:41:53 cpqbld Exp $
# Courtesy of Paul Eggert

newline='
'
IFS=$newline

case ${1--} in
-*) echo >&2 "mkdirhier: usage: mkdirhier directory ..."; exit 1
esac

status=

for directory
do
        case $directory in
        '')
                echo >&2 "mkdirhier: empty directory name"
                status=1
                continue;;
        *"$newline"*)
                echo >&2 "mkdirhier: 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

                if [ "$path" == "/" ]; then prefix=$path;
                else prefix=$path/;
                fi;

                shift

                test -d "$path" || {
                        paths=$path
                        for filename
                        do
                                if [ -n "$filename" -a "$filename" != "." ]; 
then
                                        path=$path/$filename
                                        paths=$paths$newline$path
                                fi
                        done

                        mkdir $paths || status=$?

                        break
                }
        done
  done

exit $status

Attachment: signature.asc
Description: Digital signature

Reply via email to