File: mkinstalldirs

package info (click to toggle)
sane-backends-extras 1.0.22.4
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 3,080 kB
  • ctags: 2,710
  • sloc: ansic: 27,680; sh: 10,433; makefile: 448
file content (110 lines) | stat: -rwxr-xr-x 2,377 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
# Public domain

# $Id$

errstatus=0
dirmode=""
owner=""
group=""

chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHOWNPROG-chgrp}"

usage="\
Usage: mkinstalldirs [-h] [--help] [-m mode] [-o owner] [-g group] dir ..."

# process command line arguments
while test $# -gt 0 ; do
   case "${1}" in
     -h | --help | --h* )			# -h for help
        echo "${usage}" 1>&2; exit 0 ;;
     -m )					# -m PERM arg
        shift
        test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
        dirmode="${1}"
        shift ;;
     -o )					# -o OWNER arg
        shift
        test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
        owner="${1}"
        shift ;;
     -g )					# -g OWNER arg
        shift
        test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
        group="${1}"
        shift ;;
     -- ) shift; break ;;			# stop option processing
     -* ) echo "${usage}" 1>&2; exit 1 ;;	# unknown option
     * )  break ;;				# first non-opt arg
   esac
done

for file
do
   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
   shift

   pathcomp=
   for d
   do
     pathcomp="$pathcomp$d"
     case "$pathcomp" in
       -* ) pathcomp=./$pathcomp ;;
     esac

     if test ! -d "$pathcomp" -a ! -d "$pathcomp/"; then
        echo "mkdir $pathcomp"

        mkdir "$pathcomp" || lasterr=$?

        if test ! -d "$pathcomp" -a ! -d "$pathcomp/"; then
  	  errstatus=$lasterr
	else
	  if test ! -z "$dirmode"; then
	     echo "$chmodprog $dirmode $pathcomp"

	     lasterr=""
	     $chmodprog $dirmode "$pathcomp" || lasterr=$?

	     if test ! -z "$lasterr"; then
	       errstatus=$lasterr
	     fi
	  fi
	  if test ! -z "$owner"; then
	     echo "$chownprog $owner $pathcomp"

	     lasterr=""
	     $chownprog $owner "$pathcomp" || lasterr=$?

	     if test ! -z "$lasterr"; then
	       errstatus=$lasterr
	     fi
	  fi
	  if test ! -z "$group"; then
	     echo "$chgrpprog $group $pathcomp"

	     lasterr=""
	     $chgrpprog $group "$pathcomp" || lasterr=$?

	     if test ! -z "$lasterr"; then
	       errstatus=$lasterr
	     fi
	  fi
        fi
     fi

     pathcomp="$pathcomp/"
   done
done

exit $errstatus

# Local Variables:
# mode:shell-script
# sh-indentation:3
# End: