Changeset 507 in MondoRescue for trunk/mondo/mkinstalldirs


Ignore:
Timestamp:
Apr 30, 2006, 2:04:16 AM (18 years ago)
Author:
bcornec
Message:

merge -r489:506 $SVN_M/branches/stable

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/mondo/mkinstalldirs

    r30 r507  
    11#! /bin/sh
    22# mkinstalldirs --- make directory hierarchy
    3 # Author: Noah Friedman <friedman@prep.ai.mit.edu>
     3
     4scriptversion=2004-02-15.20
     5
     6# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
    47# Created: 1993-05-16
    5 # Public domain
     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>.
    613
    714errstatus=0
     
    916
    1017usage="\
    11 Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
     18Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
     19
     20Create each directory DIR (with mode MODE, if specified), including all
     21leading file name components.
     22
     23Report bugs to <bug-automake@gnu.org>."
    1224
    1325# process command line arguments
    1426while test $# -gt 0 ; do
    15    case "${1}" in
    16      -h | --help | --h* )           # -h for help
    17     echo "${usage}" 1>&2; exit 0 ;;
    18      -m )                   # -m PERM arg
    19     shift
    20     test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
    21     dirmode="${1}"
    22     shift ;;
    23      -- ) shift; break ;;           # stop option processing
    24      -* ) echo "${usage}" 1>&2; exit 1 ;;   # unknown option
    25      * )  break ;;              # first non-opt arg
    26    esac
     27  case $1 in
     28    -h | --help | --h*)         # -h for help
     29      echo "$usage"
     30      exit 0
     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 0
     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
    2754done
    2855
     
    3764
    3865case $# in
    39 0) exit 0 ;;
     66  0) exit 0 ;;
    4067esac
    4168
     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.
    4275case $dirmode in
    43 '')
    44   if mkdir -p -- . 2>/dev/null; then
    45     echo "mkdir -p -- $*"
    46     exec mkdir -p -- "$@"
    47   fi ;;
    48 *)
    49   if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
    50     echo "mkdir -m $dirmode -p -- $*"
    51     exec mkdir -m "$dirmode" -p -- "$@"
    52   fi ;;
     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    ;;
    53102esac
    54103
    55104for file
    56105do
    57    set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
    58    shift
     106  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
     107  shift
    59108
    60    pathcomp=
    61    for d
    62    do
    63      pathcomp="$pathcomp$d"
    64      case "$pathcomp" in
    65        -* ) pathcomp=./$pathcomp ;;
    66      esac
     109  pathcomp=
     110  for d
     111  do
     112    pathcomp="$pathcomp$d"
     113    case $pathcomp in
     114      -*) pathcomp=./$pathcomp ;;
     115    esac
    67116
    68      if test ! -d "$pathcomp"; then
    69     echo "mkdir $pathcomp"
     117    if test ! -d "$pathcomp"; then
     118      echo "mkdir $pathcomp"
    70119
    71     mkdir "$pathcomp" || lasterr=$?
     120      mkdir "$pathcomp" || lasterr=$?
    72121
    73     if test ! -d "$pathcomp"; then
    74       errstatus=$lasterr
    75     else
    76       if test ! -z "$dirmode"; then
    77          echo "chmod $dirmode $pathcomp"
     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=$?
    78129
    79          lasterr=""
    80          chmod "$dirmode" "$pathcomp" || lasterr=$?
    81 
    82          if test ! -z "$lasterr"; then
    83            errstatus=$lasterr
    84          fi
     130      if test ! -z "$lasterr"; then
     131        errstatus=$lasterr
    85132      fi
    86133    fi
    87      fi
     134      fi
     135    fi
    88136
    89      pathcomp="$pathcomp/"
    90    done
     137    pathcomp="$pathcomp/"
     138  done
    91139done
    92140
     
    95143# Local Variables:
    96144# mode: shell-script
    97 # sh-indentation: 3
     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: "$"
    98150# End:
    99 # mkinstalldirs ends here
Note: See TracChangeset for help on using the changeset viewer.