Blame mkinstalldirs

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