File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / build-aux / mkinstalldirs
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:57:49 2012 UTC (12 years, 10 months ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_16p0, v1_14p0, v1_14, v1_13_1, HEAD
libiconv

    1: #! /bin/sh
    2: # mkinstalldirs --- make directory hierarchy
    3: 
    4: scriptversion=2005-02-02.21
    5: 
    6: # Original author: Noah Friedman <friedman@prep.ai.mit.edu>
    7: # Created: 1993-05-16
    8: # Public domain.
    9: #
   10: # This file is maintained in Automake, please report
   11: # bugs to <bug-automake@gnu.org> or send patches to
   12: # <automake-patches@gnu.org>.
   13: 
   14: errstatus=0
   15: dirmode=""
   16: 
   17: usage="\
   18: Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
   19: 
   20: Create each directory DIR (with mode MODE, if specified), including all
   21: leading file name components.
   22: 
   23: Report bugs to <bug-automake@gnu.org>."
   24: 
   25: # process command line arguments
   26: while test $# -gt 0 ; do
   27:   case $1 in
   28:     -h | --help | --h*)         # -h for help
   29:       echo "$usage"
   30:       exit $?
   31:       ;;
   32:     -m)                         # -m PERM arg
   33:       shift
   34:       test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
   35:       dirmode=$1
   36:       shift
   37:       ;;
   38:     --version)
   39:       echo "$0 $scriptversion"
   40:       exit $?
   41:       ;;
   42:     --)                         # stop option processing
   43:       shift
   44:       break
   45:       ;;
   46:     -*)                         # unknown option
   47:       echo "$usage" 1>&2
   48:       exit 1
   49:       ;;
   50:     *)                          # first non-opt arg
   51:       break
   52:       ;;
   53:   esac
   54: done
   55: 
   56: for file
   57: do
   58:   if test -d "$file"; then
   59:     shift
   60:   else
   61:     break
   62:   fi
   63: done
   64: 
   65: case $# in
   66:   0) exit 0 ;;
   67: esac
   68: 
   69: # Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
   70: # mkdir -p a/c at the same time, both will detect that a is missing,
   71: # one will create a, then the other will try to create a and die with
   72: # a "File exists" error.  This is a problem when calling mkinstalldirs
   73: # from a parallel make.  We use --version in the probe to restrict
   74: # ourselves to GNU mkdir, which is thread-safe.
   75: case $dirmode in
   76:   '')
   77:     if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
   78:       echo "mkdir -p -- $*"
   79:       exec mkdir -p -- "$@"
   80:     else
   81:       # On NextStep and OpenStep, the `mkdir' command does not
   82:       # recognize any option.  It will interpret all options as
   83:       # directories to create, and then abort because `.' already
   84:       # exists.
   85:       test -d ./-p && rmdir ./-p
   86:       test -d ./--version && rmdir ./--version
   87:     fi
   88:     ;;
   89:   *)
   90:     if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
   91:        test ! -d ./--version; then
   92:       echo "mkdir -m $dirmode -p -- $*"
   93:       exec mkdir -m "$dirmode" -p -- "$@"
   94:     else
   95:       # Clean up after NextStep and OpenStep mkdir.
   96:       for d in ./-m ./-p ./--version "./$dirmode";
   97:       do
   98:         test -d $d && rmdir $d
   99:       done
  100:     fi
  101:     ;;
  102: esac
  103: 
  104: for file
  105: do
  106:   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
  107:   shift
  108: 
  109:   pathcomp=
  110:   for d
  111:   do
  112:     pathcomp="$pathcomp$d"
  113:     case $pathcomp in
  114:       -*) pathcomp=./$pathcomp ;;
  115:     esac
  116: 
  117:     if test ! -d "$pathcomp"; then
  118:       echo "mkdir $pathcomp"
  119: 
  120:       mkdir "$pathcomp" || lasterr=$?
  121: 
  122:       if test ! -d "$pathcomp"; then
  123: 	errstatus=$lasterr
  124:       else
  125: 	if test ! -z "$dirmode"; then
  126: 	  echo "chmod $dirmode $pathcomp"
  127: 	  lasterr=""
  128: 	  chmod "$dirmode" "$pathcomp" || lasterr=$?
  129: 
  130: 	  if test ! -z "$lasterr"; then
  131: 	    errstatus=$lasterr
  132: 	  fi
  133: 	fi
  134:       fi
  135:     fi
  136: 
  137:     pathcomp="$pathcomp/"
  138:   done
  139: done
  140: 
  141: exit $errstatus
  142: 
  143: # Local Variables:
  144: # mode: shell-script
  145: # sh-indentation: 2
  146: # eval: (add-hook 'write-file-hooks 'time-stamp)
  147: # time-stamp-start: "scriptversion="
  148: # time-stamp-format: "%:y-%02m-%02d.%02H"
  149: # time-stamp-end: "$"
  150: # End:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>