Blame mkinstalldirs

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