"Fossies" - the Fresh Open Source Software Archive

Member "libev-4.33/mkinstalldirs" (18 Mar 2020, 3539 Bytes) of package /linux/misc/libev-4.33.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Bash source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the last Fossies "Diffs" side-by-side code changes report for "mkinstalldirs": 4.25_vs_4.27.

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