Blame mkinstalldirs

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