Blame mkinstalldirs

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