Blame hwmixvolume/mkinstalldirs

Packit Service b98cfc
#! /bin/sh
Packit Service b98cfc
# mkinstalldirs --- make directory hierarchy
Packit Service b98cfc
Packit Service b98cfc
scriptversion=2009-04-28.21; # UTC
Packit Service b98cfc
Packit Service b98cfc
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
Packit Service b98cfc
# Created: 1993-05-16
Packit Service b98cfc
# Public domain.
Packit Service b98cfc
#
Packit Service b98cfc
# This file is maintained in Automake, please report
Packit Service b98cfc
# bugs to <bug-automake@gnu.org> or send patches to
Packit Service b98cfc
# <automake-patches@gnu.org>.
Packit Service b98cfc
Packit Service b98cfc
nl='
Packit Service b98cfc
'
Packit Service b98cfc
IFS=" ""	$nl"
Packit Service b98cfc
errstatus=0
Packit Service b98cfc
dirmode=
Packit Service b98cfc
Packit Service b98cfc
usage="\
Packit Service b98cfc
Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
Packit Service b98cfc
Packit Service b98cfc
Create each directory DIR (with mode MODE, if specified), including all
Packit Service b98cfc
leading file name components.
Packit Service b98cfc
Packit Service b98cfc
Report bugs to <bug-automake@gnu.org>."
Packit Service b98cfc
Packit Service b98cfc
# process command line arguments
Packit Service b98cfc
while test $# -gt 0 ; do
Packit Service b98cfc
  case $1 in
Packit Service b98cfc
    -h | --help | --h*)         # -h for help
Packit Service b98cfc
      echo "$usage"
Packit Service b98cfc
      exit $?
Packit Service b98cfc
      ;;
Packit Service b98cfc
    -m)                         # -m PERM arg
Packit Service b98cfc
      shift
Packit Service b98cfc
      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
Packit Service b98cfc
      dirmode=$1
Packit Service b98cfc
      shift
Packit Service b98cfc
      ;;
Packit Service b98cfc
    --version)
Packit Service b98cfc
      echo "$0 $scriptversion"
Packit Service b98cfc
      exit $?
Packit Service b98cfc
      ;;
Packit Service b98cfc
    --)                         # stop option processing
Packit Service b98cfc
      shift
Packit Service b98cfc
      break
Packit Service b98cfc
      ;;
Packit Service b98cfc
    -*)                         # unknown option
Packit Service b98cfc
      echo "$usage" 1>&2
Packit Service b98cfc
      exit 1
Packit Service b98cfc
      ;;
Packit Service b98cfc
    *)                          # first non-opt arg
Packit Service b98cfc
      break
Packit Service b98cfc
      ;;
Packit Service b98cfc
  esac
Packit Service b98cfc
done
Packit Service b98cfc
Packit Service b98cfc
for file
Packit Service b98cfc
do
Packit Service b98cfc
  if test -d "$file"; then
Packit Service b98cfc
    shift
Packit Service b98cfc
  else
Packit Service b98cfc
    break
Packit Service b98cfc
  fi
Packit Service b98cfc
done
Packit Service b98cfc
Packit Service b98cfc
case $# in
Packit Service b98cfc
  0) exit 0 ;;
Packit Service b98cfc
esac
Packit Service b98cfc
Packit Service b98cfc
# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
Packit Service b98cfc
# mkdir -p a/c at the same time, both will detect that a is missing,
Packit Service b98cfc
# one will create a, then the other will try to create a and die with
Packit Service b98cfc
# a "File exists" error.  This is a problem when calling mkinstalldirs
Packit Service b98cfc
# from a parallel make.  We use --version in the probe to restrict
Packit Service b98cfc
# ourselves to GNU mkdir, which is thread-safe.
Packit Service b98cfc
case $dirmode in
Packit Service b98cfc
  '')
Packit Service b98cfc
    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
Packit Service b98cfc
      echo "mkdir -p -- $*"
Packit Service b98cfc
      exec mkdir -p -- "$@"
Packit Service b98cfc
    else
Packit Service b98cfc
      # On NextStep and OpenStep, the 'mkdir' command does not
Packit Service b98cfc
      # recognize any option.  It will interpret all options as
Packit Service b98cfc
      # directories to create, and then abort because '.' already
Packit Service b98cfc
      # exists.
Packit Service b98cfc
      test -d ./-p && rmdir ./-p
Packit Service b98cfc
      test -d ./--version && rmdir ./--version
Packit Service b98cfc
    fi
Packit Service b98cfc
    ;;
Packit Service b98cfc
  *)
Packit Service b98cfc
    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
Packit Service b98cfc
       test ! -d ./--version; then
Packit Service b98cfc
      echo "mkdir -m $dirmode -p -- $*"
Packit Service b98cfc
      exec mkdir -m "$dirmode" -p -- "$@"
Packit Service b98cfc
    else
Packit Service b98cfc
      # Clean up after NextStep and OpenStep mkdir.
Packit Service b98cfc
      for d in ./-m ./-p ./--version "./$dirmode";
Packit Service b98cfc
      do
Packit Service b98cfc
        test -d $d && rmdir $d
Packit Service b98cfc
      done
Packit Service b98cfc
    fi
Packit Service b98cfc
    ;;
Packit Service b98cfc
esac
Packit Service b98cfc
Packit Service b98cfc
for file
Packit Service b98cfc
do
Packit Service b98cfc
  case $file in
Packit Service b98cfc
    /*) pathcomp=/ ;;
Packit Service b98cfc
    *)  pathcomp= ;;
Packit Service b98cfc
  esac
Packit Service b98cfc
  oIFS=$IFS
Packit Service b98cfc
  IFS=/
Packit Service b98cfc
  set fnord $file
Packit Service b98cfc
  shift
Packit Service b98cfc
  IFS=$oIFS
Packit Service b98cfc
Packit Service b98cfc
  for d
Packit Service b98cfc
  do
Packit Service b98cfc
    test "x$d" = x && continue
Packit Service b98cfc
Packit Service b98cfc
    pathcomp=$pathcomp$d
Packit Service b98cfc
    case $pathcomp in
Packit Service b98cfc
      -*) pathcomp=./$pathcomp ;;
Packit Service b98cfc
    esac
Packit Service b98cfc
Packit Service b98cfc
    if test ! -d "$pathcomp"; then
Packit Service b98cfc
      echo "mkdir $pathcomp"
Packit Service b98cfc
Packit Service b98cfc
      mkdir "$pathcomp" || lasterr=$?
Packit Service b98cfc
Packit Service b98cfc
      if test ! -d "$pathcomp"; then
Packit Service b98cfc
	errstatus=$lasterr
Packit Service b98cfc
      else
Packit Service b98cfc
	if test ! -z "$dirmode"; then
Packit Service b98cfc
	  echo "chmod $dirmode $pathcomp"
Packit Service b98cfc
	  lasterr=
Packit Service b98cfc
	  chmod "$dirmode" "$pathcomp" || lasterr=$?
Packit Service b98cfc
Packit Service b98cfc
	  if test ! -z "$lasterr"; then
Packit Service b98cfc
	    errstatus=$lasterr
Packit Service b98cfc
	  fi
Packit Service b98cfc
	fi
Packit Service b98cfc
      fi
Packit Service b98cfc
    fi
Packit Service b98cfc
Packit Service b98cfc
    pathcomp=$pathcomp/
Packit Service b98cfc
  done
Packit Service b98cfc
done
Packit Service b98cfc
Packit Service b98cfc
exit $errstatus
Packit Service b98cfc
Packit Service b98cfc
# Local Variables:
Packit Service b98cfc
# mode: shell-script
Packit Service b98cfc
# sh-indentation: 2
Packit Service b98cfc
# eval: (add-hook 'write-file-hooks 'time-stamp)
Packit Service b98cfc
# time-stamp-start: "scriptversion="
Packit Service b98cfc
# time-stamp-format: "%:y-%02m-%02d.%02H"
Packit Service b98cfc
# time-stamp-time-zone: "UTC"
Packit Service b98cfc
# time-stamp-end: "; # UTC"
Packit Service b98cfc
# End: