Blame mkinstalldirs

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