Blame mkinstalldirs

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