Blame mkinstalldirs

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