(linenum→info "unix/slp.c:2238")

dbus/1.0.2/ltmain.sh

    1: # ltmain.sh - Provide generalized library-building support services.
    2: # NOTE: Changing this file will not affect anything until you rerun configure.
    3: #
    4: # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
    5: # Free Software Foundation, Inc.
    6: # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
    7: #
    8: # This program is free software; you can redistribute it and/or modify
    9: # it under the terms of the GNU General Public License as published by
   10: # the Free Software Foundation; either version 2 of the License, or
   11: # (at your option) any later version.
   12: #
   13: # This program is distributed in the hope that it will be useful, but
   14: # WITHOUT ANY WARRANTY; without even the implied warranty of
   15: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   16: # General Public License for more details.
   17: #
   18: # You should have received a copy of the GNU General Public License
   19: # along with this program; if not, write to the Free Software
   20: # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
   21: #
   22: # As a special exception to the GNU General Public License, if you
   23: # distribute this file as part of a program that contains a
   24: # configuration script generated by Autoconf, you may include it under
   25: # the same distribution terms that you use for the rest of that program.
   26: 
   27: basename="s,^.*/,,g"
   28: 
   29: # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
   30: # is ksh but when the shell is invoked as "sh" and the current value of
   31: # the _XPG environment variable is not equal to 1 (one), the special
   32: # positional parameter $0, within a function call, is the name of the
   33: # function.
   34: progpath="$0"
   35: 
   36: # The name of this program:
   37: progname=`echo "$progpath" | $SED $basename`
   38: modename="$progname"
   39: 
   40: # Global variables:
   41: EXIT_SUCCESS=0
   42: EXIT_FAILURE=1
   43: 
   44: PROGRAM=ltmain.sh
   45: PACKAGE=libtool
   46: VERSION=1.5.22
   47: TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
   48: 
   49: # Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
   50: if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   51:   emulate sh
   52:   NULLCMD=:
   53:   # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
   54:   # is contrary to our usage.  Disable this feature.
   55:   alias -g '${1+"$@"}'='"$@"'
   56:   setopt NO_GLOB_SUBST
   57: else
   58:   case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
   59: fi
   60: 
   61: # Check that we have a working $echo.
   62: if test "X$1" = X--no-reexec; then
   63:   # Discard the --no-reexec flag, and continue.
   64:   shift
   65: elif test "X$1" = X--fallback-echo; then
   66:   # Avoid inline document here, it may be left over
   67:   :
   68: elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
   69:   # Yippee, $echo works!
   70:   :
   71: else
   72:   # Restart under the correct shell, and then maybe $echo will work.
   73:   exec $SHELL "$progpath" --no-reexec ${1+"$@"}
   74: fi
   75: 
   76: if test "X$1" = X--fallback-echo; then
   77:   # used as fallback echo
   78:   shift
   79:   cat <<EOF
   80: $*
   81: EOF
   82:   exit $EXIT_SUCCESS
   83: fi
   84: 
   85: default_mode=
   86: help="Try \`$progname --help' for more information."
   87: magic="%%%MAGIC variable%%%"
   88: mkdir="mkdir"
   89: mv="mv -f"
   90: rm="rm -f"
   91: 
   92: # Sed substitution that helps us do robust quoting.  It backslashifies
   93: # metacharacters that are still active within double-quoted strings.
   94: Xsed="${SED}"' -e 1s/^X//'
   95: sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
   96: # test EBCDIC or ASCII
   97: case `echo X|tr X '\101'` in
   98:  A) # ASCII based system
   99:     # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
  100:   SP2NL='tr \040 \012'
  101:   NL2SP='tr \015\012 \040\040'
  102:   ;;
  103:  *) # EBCDIC based system
  104:   SP2NL='tr \100 \n'
  105:   NL2SP='tr \r\n \100\100'
  106:   ;;
  107: esac
  108: 
  109: # NLS nuisances.
  110: # Only set LANG and LC_ALL to C if already set.
  111: # These must not be set unconditionally because not all systems understand
  112: # e.g. LANG=C (notably SCO).
  113: # We save the old values to restore during execute mode.
  114: for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
  115: do
  116:   eval "if test \"\${$lt_var+set}\" = set; then
  117:          save_$lt_var=\$$lt_var
  118:          $lt_var=C
  119:          export $lt_var
  120:        fi"
  121: done
  122: 
  123: # Make sure IFS has a sensible default
  124: lt_nl='
  125: '
  126: IFS="   $lt_nl"
  127: 
  128: if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
  129:   $echo "$modename: not configured to build any kind of library" 1>&2
  130:   $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
  131:   exit $EXIT_FAILURE
  132: fi
  133: 
  134: # Global variables.
  135: mode=$default_mode
  136: nonopt=
  137: prev=
  138: prevopt=
  139: run=
  140: show="$echo"
  141: show_help=
  142: execute_dlfiles=
  143: duplicate_deps=no
  144: preserve_args=
  145: lo2o="s/\\.lo\$/.${objext}/"
  146: o2lo="s/\\.${objext}\$/.lo/"
  147: extracted_archives=
  148: extracted_serial=0
  149: 
  150: #####################################
  151: # Shell function definitions:
  152: # This seems to be the best place for them
  153: 
  154: # func_mktempdir [string]
  155: # Make a temporary directory that won't clash with other running
  156: # libtool processes, and avoids race conditions if possible.  If
  157: # given, STRING is the basename for that directory.
  158: func_mktempdir ()
  159: {
  160:     my_template="${TMPDIR-/tmp}/${1-$progname}"
  161: 
  162:     if test "$run" = ":"; then
  163:       # Return a directory name, but don't create it in dry-run mode
  164:       my_tmpdir="${my_template}-$$"
  165:     else
  166: 
  167:       # If mktemp works, use that first and foremost
  168:       my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
  169: 
  170:       if test ! -d "$my_tmpdir"; then
  171:         # Failing that, at least try and use $RANDOM to avoid a race
  172:         my_tmpdir="${my_template}-${RANDOM-0}$$"
  173: 
  174:         save_mktempdir_umask=`umask`
  175:         umask 0077
  176:         $mkdir "$my_tmpdir"
  177:         umask $save_mktempdir_umask
  178:       fi
  179: 
  180:       # If we're not in dry-run mode, bomb out on failure
  181:       test -d "$my_tmpdir" || {
  182:         $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
  183:         exit $EXIT_FAILURE
  184:       }
  185:     fi
  186: 
  187:     $echo "X$my_tmpdir" | $Xsed
  188: }
  189: 
  190: 
  191: # func_win32_libid arg
  192: # return the library type of file 'arg'
  193: #
  194: # Need a lot of goo to handle *both* DLLs and import libs
  195: # Has to be a shell function in order to 'eat' the argument
  196: # that is supplied when $file_magic_command is called.
  197: func_win32_libid ()
  198: {
  199:   win32_libid_type="unknown"
  200:   win32_fileres=`file -L $1 2>/dev/null`
  201:   case $win32_fileres in
  202:   *ar\ archive\ import\ library*) # definitely import
  203:     win32_libid_type="x86 archive import"
  204:     ;;
  205:   *ar\ archive*) # could be an import, or static
  206:     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
  207:       $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
  208:       win32_nmres=`eval $NM -f posix -A $1 | \
  209:         $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
  210:       case $win32_nmres in
  211:       import*)  win32_libid_type="x86 archive import";;
  212:       *)        win32_libid_type="x86 archive static";;
  213:       esac
  214:     fi
  215:     ;;
  216:   *DLL*)
  217:     win32_libid_type="x86 DLL"
  218:     ;;
  219:   *executable*) # but shell scripts are "executable" too...
  220:     case $win32_fileres in
  221:     *MS\ Windows\ PE\ Intel*)
  222:       win32_libid_type="x86 DLL"
  223:       ;;
  224:     esac
  225:     ;;
  226:   esac
  227:   $echo $win32_libid_type
  228: }
  229: 
  230: 
  231: # func_infer_tag arg
  232: # Infer tagged configuration to use if any are available and
  233: # if one wasn't chosen via the "--tag" command line option.
  234: # Only attempt this if the compiler in the base compile
  235: # command doesn't match the default compiler.
  236: # arg is usually of the form 'gcc ...'
  237: func_infer_tag ()
  238: {
  239:     if test -n "$available_tags" && test -z "$tagname"; then
  240:       CC_quoted=
  241:       for arg in $CC; do
  242:         case $arg in
  243:           *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \        ]*|*]*|"")
  244:           arg="\"$arg\""
  245:           ;;
  246:         esac
  247:         CC_quoted="$CC_quoted $arg"
  248:       done
  249:       case $@ in
  250:       # Blanks in the command may have been stripped by the calling shell,
  251:       # but not from the CC environment variable when configure was run.
  252:       " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
  253:       # Blanks at the start of $base_compile will cause this to fail
  254:       # if we don't check for them as well.
  255:       *)
  256:         for z in $available_tags; do
  257:           if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
  258:             # Evaluate the configuration.
  259:             eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
  260:             CC_quoted=
  261:             for arg in $CC; do
  262:             # Double-quote args containing other shell metacharacters.
  263:             case $arg in
  264:               *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
  265:               arg="\"$arg\""
  266:               ;;
  267:             esac
  268:             CC_quoted="$CC_quoted $arg"
  269:           done
  270:             case "$@ " in
  271:               " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
  272:               # The compiler in the base compile command matches
  273:               # the one in the tagged configuration.
  274:               # Assume this is the tagged configuration we want.
  275:               tagname=$z
  276:               break
  277:               ;;
  278:             esac
  279:           fi
  280:         done
  281:         # If $tagname still isn't set, then no tagged configuration
  282:         # was found and let the user know that the "--tag" command
  283:         # line option must be used.
  284:         if test -z "$tagname"; then
  285:           $echo "$modename: unable to infer tagged configuration"
  286:           $echo "$modename: specify a tag with \`--tag'" 1>&2
  287:           exit $EXIT_FAILURE
  288: #        else
  289: #          $echo "$modename: using $tagname tagged configuration"
  290:         fi
  291:         ;;
  292:       esac
  293:     fi
  294: }
  295: 
  296: 
  297: # func_extract_an_archive dir oldlib
  298: func_extract_an_archive ()
  299: {
  300:     f_ex_an_ar_dir="$1"; shift
  301:     f_ex_an_ar_oldlib="$1"
  302: 
  303:     $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
  304:     $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
  305:     if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
  306:      :
  307:     else
  308:       $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
  309:       exit $EXIT_FAILURE
  310:     fi
  311: }
  312: 
  313: # func_extract_archives gentop oldlib ...
  314: func_extract_archives ()
  315: {
  316:     my_gentop="$1"; shift
  317:     my_oldlibs=${1+"$@"}
  318:     my_oldobjs=""
  319:     my_xlib=""
  320:     my_xabs=""
  321:     my_xdir=""
  322:     my_status=""
  323: 
  324:     $show "${rm}r $my_gentop"
  325:     $run ${rm}r "$my_gentop"
  326:     $show "$mkdir $my_gentop"
  327:     $run $mkdir "$my_gentop"
  328:     my_status=$?
  329:     if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
  330:       exit $my_status
  331:     fi
  332: 
  333:     for my_xlib in $my_oldlibs; do
  334:       # Extract the objects.
  335:       case $my_xlib in
  336:         [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
  337:         *) my_xabs=`pwd`"/$my_xlib" ;;
  338:       esac
  339:       my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
  340:       my_xlib_u=$my_xlib
  341:       while :; do
  342:         case " $extracted_archives " in
  343:        *" $my_xlib_u "*)
  344:          extracted_serial=`expr $extracted_serial + 1`
  345:          my_xlib_u=lt$extracted_serial-$my_xlib ;;
  346:        *) break ;;
  347:        esac
  348:       done
  349:       extracted_archives="$extracted_archives $my_xlib_u"
  350:       my_xdir="$my_gentop/$my_xlib_u"
  351: 
  352:       $show "${rm}r $my_xdir"
  353:       $run ${rm}r "$my_xdir"
  354:       $show "$mkdir $my_xdir"
  355:       $run $mkdir "$my_xdir"
  356:       exit_status=$?
  357:       if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
  358:         exit $exit_status
  359:       fi
  360:       case $host in
  361:       *-darwin*)
  362:         $show "Extracting $my_xabs"
  363:         # Do not bother doing anything if just a dry run
  364:         if test -z "$run"; then
  365:           darwin_orig_dir=`pwd`
  366:           cd $my_xdir || exit $?
  367:           darwin_archive=$my_xabs
  368:           darwin_curdir=`pwd`
  369:           darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
  370:           darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
  371:           if test -n "$darwin_arches"; then 
  372:             darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
  373:             darwin_arch=
  374:             $show "$darwin_base_archive has multiple architectures $darwin_arches"
  375:             for darwin_arch in  $darwin_arches ; do
  376:               mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
  377:               lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
  378:               cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
  379:               func_extract_an_archive "`pwd`" "${darwin_base_archive}"
  380:               cd "$darwin_curdir"
  381:               $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
  382:             done # $darwin_arches
  383:       ## Okay now we have a bunch of thin objects, gotta fatten them up :)
  384:             darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
  385:             darwin_file=
  386:             darwin_files=
  387:             for darwin_file in $darwin_filelist; do
  388:               darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
  389:               lipo -create -output "$darwin_file" $darwin_files
  390:             done # $darwin_filelist
  391:             ${rm}r unfat-$$
  392:             cd "$darwin_orig_dir"
  393:           else
  394:             cd "$darwin_orig_dir"
  395:             func_extract_an_archive "$my_xdir" "$my_xabs"
  396:           fi # $darwin_arches
  397:         fi # $run
  398:         ;;
  399:       *)
  400:         func_extract_an_archive "$my_xdir" "$my_xabs"
  401:         ;;
  402:       esac
  403:       my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
  404:     done
  405:     func_extract_archives_result="$my_oldobjs"
  406: }
  407: # End of Shell function definitions
  408: #####################################
  409: 
  410: # Darwin sucks
  411: eval std_shrext=\"$shrext_cmds\"
  412: 
  413: disable_libs=no
  414: 
  415: # Parse our command line options once, thoroughly.
  416: while test "$#" -gt 0
  417: do
  418:   arg="$1"
  419:   shift
  420: 
  421:   case $arg in
  422:   -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
  423:   *) optarg= ;;
  424:   esac
  425: 
  426:   # If the previous option needs an argument, assign it.
  427:   if test -n "$prev"; then
  428:     case $prev in
  429:     execute_dlfiles)
  430:       execute_dlfiles="$execute_dlfiles $arg"
  431:       ;;
  432:     tag)
  433:       tagname="$arg"
  434:       preserve_args="${preserve_args}=$arg"
  435: 
  436:       # Check whether tagname contains only valid characters
  437:       case $tagname in
  438:       *[!-_A-Za-z0-9,/]*)
  439:         $echo "$progname: invalid tag name: $tagname" 1>&2
  440:         exit $EXIT_FAILURE
  441:         ;;
  442:       esac
  443: 
  444:       case $tagname in
  445:       CC)
  446:         # Don't test for the "default" C tag, as we know, it's there, but
  447:         # not specially marked.
  448:         ;;
  449:       *)
  450:         if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
  451:           taglist="$taglist $tagname"
  452:           # Evaluate the configuration.
  453:           eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
  454:         else
  455:           $echo "$progname: ignoring unknown tag $tagname" 1>&2
  456:         fi
  457:         ;;
  458:       esac
  459:       ;;
  460:     *)
  461:       eval "$prev=\$arg"
  462:       ;;
  463:     esac
  464: 
  465:     prev=
  466:     prevopt=
  467:     continue
  468:   fi
  469: 
  470:   # Have we seen a non-optional argument yet?
  471:   case $arg in
  472:   --help)
  473:     show_help=yes
  474:     ;;
  475: 
  476:   --version)
  477:     $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
  478:     $echo
  479:     $echo "Copyright (C) 2005  Free Software Foundation, Inc."
  480:     $echo "This is free software; see the source for copying conditions.  There is NO"
  481:     $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
  482:     exit $?
  483:     ;;
  484: 
  485:   --config)
  486:     ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
  487:     # Now print the configurations for the tags.
  488:     for tagname in $taglist; do
  489:       ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
  490:     done
  491:     exit $?
  492:     ;;
  493: 
  494:   --debug)
  495:     $echo "$progname: enabling shell trace mode"
  496:     set -x
  497:     preserve_args="$preserve_args $arg"
  498:     ;;
  499: 
  500:   --dry-run | -n)
  501:     run=:
  502:     ;;
  503: 
  504:   --features)
  505:     $echo "host: $host"
  506:     if test "$build_libtool_libs" = yes; then
  507:       $echo "enable shared libraries"
  508:     else
  509:       $echo "disable shared libraries"
  510:     fi
  511:     if test "$build_old_libs" = yes; then
  512:       $echo "enable static libraries"
  513:     else
  514:       $echo "disable static libraries"
  515:     fi
  516:     exit $?
  517:     ;;
  518: 
  519:   --finish) mode="finish" ;;
  520: 
  521:   --mode) prevopt="--mode" prev=mode ;;
  522:   --mode=*) mode="$optarg" ;;
  523: 
  524:   --preserve-dup-deps) duplicate_deps="yes" ;;
  525: 
  526:   --quiet | --silent)
  527:     show=:
  528:     preserve_args="$preserve_args $arg"
  529:     ;;
  530: 
  531:   --tag)
  532:     prevopt="--tag"
  533:     prev=tag
  534:     preserve_args="$preserve_args --tag"
  535:     ;;
  536:   --tag=*)
  537:     set tag "$optarg" ${1+"$@"}
  538:     shift
  539:     prev=tag
  540:     preserve_args="$preserve_args --tag"
  541:     ;;
  542: 
  543:   -dlopen)
  544:     prevopt="-dlopen"
  545:     prev=execute_dlfiles
  546:     ;;
  547: 
  548:   -*)
  549:     $echo "$modename: unrecognized option \`$arg'" 1>&2
  550:     $echo "$help" 1>&2
  551:     exit $EXIT_FAILURE
  552:     ;;
  553: 
  554:   *)
  555:     nonopt="$arg"
  556:     break
  557:     ;;
  558:   esac
  559: done
  560: 
  561: if test -n "$prevopt"; then
  562:   $echo "$modename: option \`$prevopt' requires an argument" 1>&2
  563:   $echo "$help" 1>&2
  564:   exit $EXIT_FAILURE
  565: fi
  566: 
  567: case $disable_libs in
  568: no) 
  569:   ;;
  570: shared)
  571:   build_libtool_libs=no
  572:   build_old_libs=yes
  573:   ;;
  574: static)
  575:   build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
  576:   ;;
  577: esac
  578: 
  579: # If this variable is set in any of the actions, the command in it
  580: # will be execed at the end.  This prevents here-documents from being
  581: # left over by shells.
  582: exec_cmd=
  583: 
  584: if test -z "$show_help"; then
  585: 
  586:   # Infer the operation mode.
  587:   if test -z "$mode"; then
  588:     $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
  589:     $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
  590:     case $nonopt in
  591:     *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
  592:       mode=link
  593:       for arg
  594:       do
  595:         case $arg in
  596:         -c)
  597:            mode=compile
  598:            break
  599:            ;;
  600:         esac
  601:       done
  602:       ;;
  603:     *db | *