"Fossies" - the Fresh Open Source Software Archive 
Member "bonnie++-1.04/sh.common" (28 Sep 2000, 4539 Bytes) of package /linux/privat/bonnie++_1.04.tgz:
As a special service "Fossies" has tried to format the requested text file into HTML format (style:
standard) with prefixed line numbers.
Alternatively you can here
view or
download the uninterpreted source code file.
1 ##
2 ## This file is part of shtool and free software; you can redistribute
3 ## it and/or modify it under the terms of the GNU General Public
4 ## License as published by the Free Software Foundation; either version
5 ## 2 of the License, or (at your option) any later version.
6 ##
7 ## This file is distributed in the hope that it will be useful,
8 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
9 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 ## General Public License for more details.
11 ##
12 ## You should have received a copy of the GNU General Public License
13 ## along with this program; if not, write to the Free Software
14 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
15 ## USA, or contact Ralf S. Engelschall <rse@engelschall.com>.
16 ##
17
18 ##
19 ## COMMON UTILITY CODE
20 ##
21
22 # determine name of tool
23 if [ ".$tool" != . ]; then
24 # used inside shtool script
25 toolcmd="$0 $tool"
26 toolcmdhelp="shtool $tool"
27 msgprefix="shtool:$tool"
28 else
29 # used as standalone script
30 toolcmd="$0"
31 toolcmdhelp="sh $0"
32 msgprefix="$str_tool"
33 fi
34
35 # parse argument specification string
36 eval `echo $arg_spec |\
37 sed -e 's/^\([0-9]*\)\([+=]\)/arg_NUMS=\1; arg_MODE=\2/'`
38
39 # parse option specification string
40 eval `echo h.$opt_spec |\
41 sed -e 's/\([a-zA-Z0-9]\)\([.:+]\)/opt_MODE_\1=\2;/g'`
42
43 # interate over argument line
44 opt_PREV=''
45 while [ $# -gt 0 ]; do
46 # special option stops processing
47 if [ ".$1" = ".--" ]; then
48 shift
49 break
50 fi
51
52 # determine option and argument
53 opt_ARG_OK=no
54 if [ ".$opt_PREV" != . ]; then
55 # merge previous seen option with argument
56 opt_OPT="$opt_PREV"
57 opt_ARG="$1"
58 opt_ARG_OK=yes
59 opt_PREV=''
60 else
61 # split argument into option and argument
62 case "$1" in
63 -[a-zA-Z0-9]*)
64 eval `echo "x$1" |\
65 sed -e 's/^x-\([a-zA-Z0-9]\)/opt_OPT="\1";/' \
66 -e 's/";\(.*\)$/"; opt_ARG="\1"/'`
67 ;;
68 -[a-zA-Z0-9])
69 opt_OPT=`echo "x$1" | cut -c3-`
70 opt_ARG=''
71 ;;
72 *)
73 break
74 ;;
75 esac
76 fi
77
78 # eat up option
79 shift
80
81 # determine whether option needs an argument
82 eval "opt_MODE=\$opt_MODE_${opt_OPT}"
83 if [ ".$opt_ARG" = . -a ".$opt_ARG_OK" != .yes ]; then
84 if [ ".$opt_MODE" = ".:" -o ".$opt_MODE" = ".+" ]; then
85 opt_PREV="$opt_OPT"
86 continue
87 fi
88 fi
89
90 # process option
91 case $opt_MODE in
92 '.' )
93 # boolean option
94 eval "opt_${opt_OPT}=yes"
95 ;;
96 ':' )
97 # option with argument (multiple occurances override)
98 eval "opt_${opt_OPT}=\"\$opt_ARG\""
99 ;;
100 '+' )
101 # option with argument (multiple occurances append)
102 eval "opt_${opt_OPT}=\"\$opt_${opt_OPT} \$opt_ARG\""
103 ;;
104 * )
105 echo "$msgprefix:Error: unknown option: \`-$opt_OPT'" 1>&2
106 echo "$msgprefix:Hint: run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2
107 exit 1
108 ;;
109 esac
110 done
111 if [ ".$opt_PREV" != . ]; then
112 echo "$msgprefix:Error: missing argument to option \`-$opt_PREV'" 1>&2
113 echo "$msgprefix:Hint: run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2
114 exit 1
115 fi
116
117 # process help option
118 if [ ".$opt_h" = .yes ]; then
119 echo "Usage: $toolcmdhelp $str_usage"
120 exit 0
121 fi
122
123 # complain about incorrect number of arguments
124 case $arg_MODE in
125 '=' )
126 if [ $# -ne $arg_NUMS ]; then
127 echo "$msgprefix:Error: invalid number of arguments (exactly $arg_NUMS expected)" 1>&2
128 echo "$msgprefix:Hint: run \`$toolcmd -h' or \`man shtool' for details" 1>&2
129 exit 1
130 fi
131 ;;
132 '+' )
133 if [ $# -lt $arg_NUMS ]; then
134 echo "$msgprefix:Error: invalid number of arguments (at least $arg_NUMS expected)" 1>&2
135 echo "$msgprefix:Hint: run \`$toolcmd -h' or \`man shtool' for details" 1>&2
136 exit 1
137 fi
138 ;;
139 esac
140
141 # establish a temporary file on request
142 if [ ".$gen_tmpfile" = .yes ]; then
143 if [ ".$TMPDIR" != . ]; then
144 tmpdir="$TMPDIR"
145 elif [ ".$TEMPDIR" != . ]; then
146 tmpdir="$TEMPDIR"
147 else
148 tmpdir="/tmp"
149 fi
150 tmpfile="$tmpdir/.shtool.$$"
151 rm -f $tmpfile >/dev/null 2>&1
152 touch $tmpfile
153 fi
154