"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