usr/src/grub/grub-0.97/mkinstalldirs
author Christopher Siden <chris.siden@delphix.com>
Mon, 21 May 2012 12:11:39 -0700
changeset 13700 2889e2596bd6
parent 8044 b3af80bbf173
permissions -rwxr-xr-x
2619 asynchronous destruction of ZFS file systems 2747 SPA versioning with zfs feature flags Reviewed by: Matt Ahrens <[email protected]> Reviewed by: George Wilson <[email protected]> Reviewed by: Richard Lowe <[email protected]> Reviewed by: Dan Kruchinin <[email protected]> Approved by: Eric Schrock <[email protected]>
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
#! /bin/sh
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
# mkinstalldirs --- make directory hierarchy
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
8044
b3af80bbf173 6731552 GRUB should have the ability to overlay a logo on the graphical splash screen
William Kucharski <William.Kucharski@Sun.COM>
parents: 0
diff changeset
     4
scriptversion=2004-02-15.20
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     6
# Original author: Noah Friedman <[email protected]>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
# Created: 1993-05-16
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
# Public domain.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
#
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
# This file is maintained in Automake, please report
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
# bugs to <[email protected]> or send patches to
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
# <[email protected]>.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
errstatus=0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
dirmode=""
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
usage="\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
Create each directory DIR (with mode MODE, if specified), including all
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
leading file name components.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
Report bugs to <[email protected]>."
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
# process command line arguments
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
while test $# -gt 0 ; do
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
  case $1 in
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
    -h | --help | --h*)         # -h for help
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
      echo "$usage"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
      exit 0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
      ;;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
    -m)                         # -m PERM arg
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
      shift
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
      dirmode=$1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
      shift
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
      ;;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
    --version)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
      echo "$0 $scriptversion"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
      exit 0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
      ;;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
    --)                         # stop option processing
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
      shift
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
      break
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
      ;;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
    -*)                         # unknown option
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
      echo "$usage" 1>&2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
      exit 1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
      ;;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
    *)                          # first non-opt arg
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
      break
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
      ;;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
  esac
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
done
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
for file
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
do
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
  if test -d "$file"; then
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
    shift
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
  else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
    break
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
  fi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
done
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
case $# in
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
  0) exit 0 ;;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
esac
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
8044
b3af80bbf173 6731552 GRUB should have the ability to overlay a logo on the graphical splash screen
William Kucharski <William.Kucharski@Sun.COM>
parents: 0
diff changeset
    69
# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
b3af80bbf173 6731552 GRUB should have the ability to overlay a logo on the graphical splash screen
William Kucharski <William.Kucharski@Sun.COM>
parents: 0
diff changeset
    70
# mkdir -p a/c at the same time, both will detect that a is missing,
b3af80bbf173 6731552 GRUB should have the ability to overlay a logo on the graphical splash screen
William Kucharski <William.Kucharski@Sun.COM>
parents: 0
diff changeset
    71
# one will create a, then the other will try to create a and die with
b3af80bbf173 6731552 GRUB should have the ability to overlay a logo on the graphical splash screen
William Kucharski <William.Kucharski@Sun.COM>
parents: 0
diff changeset
    72
# a "File exists" error.  This is a problem when calling mkinstalldirs
b3af80bbf173 6731552 GRUB should have the ability to overlay a logo on the graphical splash screen
William Kucharski <William.Kucharski@Sun.COM>
parents: 0
diff changeset
    73
# from a parallel make.  We use --version in the probe to restrict
b3af80bbf173 6731552 GRUB should have the ability to overlay a logo on the graphical splash screen
William Kucharski <William.Kucharski@Sun.COM>
parents: 0
diff changeset
    74
# ourselves to GNU mkdir, which is thread-safe.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
case $dirmode in
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
  '')
8044
b3af80bbf173 6731552 GRUB should have the ability to overlay a logo on the graphical splash screen
William Kucharski <William.Kucharski@Sun.COM>
parents: 0
diff changeset
    77
    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
      echo "mkdir -p -- $*"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
      exec mkdir -p -- "$@"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
    else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
      # On NextStep and OpenStep, the `mkdir' command does not
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
      # recognize any option.  It will interpret all options as
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
      # directories to create, and then abort because `.' already
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
      # exists.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
      test -d ./-p && rmdir ./-p
8044
b3af80bbf173 6731552 GRUB should have the ability to overlay a logo on the graphical splash screen
William Kucharski <William.Kucharski@Sun.COM>
parents: 0
diff changeset
    86
      test -d ./--version && rmdir ./--version
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
    fi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
    ;;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
  *)
8044
b3af80bbf173 6731552 GRUB should have the ability to overlay a logo on the graphical splash screen
William Kucharski <William.Kucharski@Sun.COM>
parents: 0
diff changeset
    90
    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
b3af80bbf173 6731552 GRUB should have the ability to overlay a logo on the graphical splash screen
William Kucharski <William.Kucharski@Sun.COM>
parents: 0
diff changeset
    91
       test ! -d ./--version; then
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
      echo "mkdir -m $dirmode -p -- $*"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
      exec mkdir -m "$dirmode" -p -- "$@"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
    else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
      # Clean up after NextStep and OpenStep mkdir.
8044
b3af80bbf173 6731552 GRUB should have the ability to overlay a logo on the graphical splash screen
William Kucharski <William.Kucharski@Sun.COM>
parents: 0
diff changeset
    96
      for d in ./-m ./-p ./--version "./$dirmode";
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
      do
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
        test -d $d && rmdir $d
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
      done
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
    fi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
    ;;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
esac
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
for file
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
do
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
  shift
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
  pathcomp=
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
  for d
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
  do
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
    pathcomp="$pathcomp$d"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
    case $pathcomp in
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
      -*) pathcomp=./$pathcomp ;;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
    esac
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
    if test ! -d "$pathcomp"; then
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
      echo "mkdir $pathcomp"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
      mkdir "$pathcomp" || lasterr=$?
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
      if test ! -d "$pathcomp"; then
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
	errstatus=$lasterr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
      else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
	if test ! -z "$dirmode"; then
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
	  echo "chmod $dirmode $pathcomp"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
	  lasterr=""
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
	  chmod "$dirmode" "$pathcomp" || lasterr=$?
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
	  if test ! -z "$lasterr"; then
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
	    errstatus=$lasterr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
	  fi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
	fi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
      fi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
    fi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
    pathcomp="$pathcomp/"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
  done
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
done
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
exit $errstatus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
# Local Variables:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
# mode: shell-script
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
# sh-indentation: 2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
# eval: (add-hook 'write-file-hooks 'time-stamp)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
# time-stamp-start: "scriptversion="
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
# time-stamp-format: "%:y-%02m-%02d.%02H"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
# time-stamp-end: "$"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
# End: