cscg22-gearboy

CSCG 2022 Challenge 'Gearboy'
git clone https://git.sinitax.com/sinitax/cscg22-gearboy
Log | Files | Refs | sfeed.txt

mkinstalldirs (1801B)


      1#! /bin/sh
      2# mkinstalldirs --- make directory hierarchy
      3# Author: Noah Friedman <friedman@prep.ai.mit.edu>
      4# Created: 1993-05-16
      5# Public domain
      6
      7errstatus=0
      8dirmode=""
      9
     10usage="\
     11Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
     12
     13# process command line arguments
     14while test $# -gt 0 ; do
     15   case "${1}" in
     16     -h | --help | --h* )			# -h for help
     17	echo "${usage}" 1>&2; exit 0 ;;
     18     -m )					# -m PERM arg
     19	shift
     20	test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
     21	dirmode="${1}"
     22	shift ;;
     23     -- ) shift; break ;;			# stop option processing
     24     -* ) echo "${usage}" 1>&2; exit 1 ;;	# unknown option
     25     * )  break ;;				# first non-opt arg
     26   esac
     27done
     28
     29for file
     30do
     31  if test -d "$file"; then
     32    shift
     33  else
     34    break
     35  fi
     36done
     37
     38case $# in
     390) exit 0 ;;
     40esac
     41
     42case $dirmode in
     43'')
     44  if mkdir -p -- . 2>/dev/null; then
     45    echo "mkdir -p -- $*"
     46    exec mkdir -p -- "$@"
     47  fi ;;
     48*)
     49  if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
     50    echo "mkdir -m $dirmode -p -- $*"
     51    exec mkdir -m "$dirmode" -p -- "$@"
     52  fi ;;
     53esac
     54
     55for file
     56do
     57   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
     58   shift
     59
     60   pathcomp=
     61   for d
     62   do
     63     pathcomp="$pathcomp$d"
     64     case "$pathcomp" in
     65       -* ) pathcomp=./$pathcomp ;;
     66     esac
     67
     68     if test ! -d "$pathcomp"; then
     69	echo "mkdir $pathcomp"
     70
     71	mkdir "$pathcomp" || lasterr=$?
     72
     73	if test ! -d "$pathcomp"; then
     74	  errstatus=$lasterr
     75	else
     76	  if test ! -z "$dirmode"; then
     77	     echo "chmod $dirmode $pathcomp"
     78
     79	     lasterr=""
     80	     chmod "$dirmode" "$pathcomp" || lasterr=$?
     81
     82	     if test ! -z "$lasterr"; then
     83	       errstatus=$lasterr
     84	     fi
     85	  fi
     86	fi
     87     fi
     88
     89     pathcomp="$pathcomp/"
     90   done
     91done
     92
     93exit $errstatus
     94
     95# Local Variables:
     96# mode: shell-script
     97# sh-indentation: 3
     98# End:
     99# mkinstalldirs ends here