home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / usr / X11R6 / bin / mkdirhier < prev    next >
Text File  |  1999-09-03  |  1KB  |  70 lines

  1. #!/bin/sh
  2. # $XConsortium: mkdirhier.sh,v 1.7 94/03/24 15:46:34 gildea Exp $
  3. # Courtesy of Paul Eggert
  4. #
  5. # $XFree86: xc/config/util/mkdirhier.sh,v 1.1.1.1.12.2 1999/07/22 14:21:28 hohndel Exp $
  6.  
  7. newline='
  8. '
  9. IFS=$newline
  10.  
  11. case ${1--} in
  12. -*) echo >&2 "mkdirhier: usage: mkdirhier directory ..."; exit 1
  13. esac
  14.  
  15. status=
  16.  
  17. for directory
  18. do
  19.     case $directory in
  20.     '')
  21.         echo >&2 "mkdirhier: empty directory name"
  22.         status=1
  23.         continue;;
  24.     *"$newline"*)
  25.         echo >&2 "mkdirhier: directory name contains a newline: \`\`$directory''"
  26.         status=1
  27.         continue;;
  28.     ///*) prefix=/;; # See Posix 2.3 "path".
  29.     //*) prefix=//;;
  30.     /*) prefix=/;;
  31.     -*) prefix=./;;
  32.     *) prefix=
  33.     esac
  34.  
  35.     IFS=/
  36.     set x $directory
  37.     case $2 in
  38.         */*)    # IFS parsing is broken
  39.         IFS=' '
  40.         set x `echo $directory | tr / ' '`
  41.         ;;
  42.     esac
  43.     IFS=$newline
  44.     shift
  45.  
  46.     for filename
  47.     do
  48.         path=$prefix$filename
  49.         prefix=$path/
  50.         shift
  51.  
  52.         test -d "$path" || {
  53.             paths=$path
  54.             for filename
  55.             do
  56.                 if [ -n "$filename" -a "$filename" != "." ]; then
  57.                     path=$path/$filename
  58.                     paths=$paths$newline$path
  59.                 fi
  60.             done
  61.  
  62.             mkdir $paths || status=$?
  63.  
  64.             break
  65.         }
  66.     done
  67.   done
  68.  
  69. exit $status
  70.