Blame scripts/mkinstalldirs

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