Blame mkinstalldirs

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