* Rainer Tammer wrote on Wed, Aug 04, 2010 at 08:41:26AM CEST:
> FAIL: tests/nomode.test
>
> This failure is due to the following error:
>
> $ ./libtool
> ./libtool[1591]: shift: bad number
>
> -> code
> # save first non-option argument
> nonopt="$opt"; shift
>
> But there is nothing in $1, so the shift fails.
Thanks. Fixing with the first patch below. (The double-quotes around
what will be $# in the final shell script are merely there to please
sh.test.)
> # ./libtool
> libtool: error: you must specify a MODE.
>
> The output of libtool-2.2.10 is:
>
> r...@build53 rc:127 # libtool
> *** Warning: inferring the mode of operation is deprecated.
> *** Future versions of Libtool will require --mode=MODE be specified.
> libtool: warning: cannot infer operation mode without MODE-ARGS
> libtool: you must specify a MODE
> Try `libtool --help' for more information.
Thanks. I'm re-enabling the pointer to --help with the second patch
below.
Cheers,
Ralf
Avoid syntax error due to shift of nonexistent parameter.
* libltdl/config/ltmain.m4sh <command-line handling>: Only shift
if there is a positional parameter to shift. Fixes `libtool
--help' when dash is used.
Report by Rainer Tammer.
diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh
index 193ff1a..98c0a27 100644
--- a/libltdl/config/ltmain.m4sh
+++ b/libltdl/config/ltmain.m4sh
@@ -387,7 +387,10 @@ M4SH_GETOPTS(
func_enable_tag "$optarg"],
[
# save first non-option argument
- nonopt="$opt"; shift
+ if test "$[]#" -gt 0; then
+ nonopt="$opt"
+ shift
+ fi
# preserve --debug
$opt_debug && func_append preserve_args " --debug"
Let `libtool' without arguments point to `--help' again.
* libltdl/config/ltmain.m4sh (func_check_version_match):
Remove duplicate and wrong error check.
* tests/help.at (standard command line options): Extend test.
Report by Rainer Tammer.
diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh
index 98c0a27..32a41c7 100644
--- a/libltdl/config/ltmain.m4sh
+++ b/libltdl/config/ltmain.m4sh
@@ -413,8 +413,6 @@ M4SH_GETOPTS(
func_fatal_configuration "not configured to build any kind of library"
fi
- test -z "$opt_mode" && func_fatal_error "error: you must specify a MODE."
-
# Darwin sucks
eval std_shrext=\"$shrext_cmds\"
diff --git a/tests/help.at b/tests/help.at
index 3460a2b..e1bcbf5 100644
--- a/tests/help.at
+++ b/tests/help.at
@@ -1,6 +1,6 @@
# help.at -- standard command line options -*- Autotest -*-
#
-# Copyright (C) 2009 Free Software Foundation, Inc.
+# Copyright (C) 2009, 2010 Free Software Foundation, Inc.
#
# This file is part of GNU Libtool.
#
@@ -35,6 +35,10 @@ AT_CHECK([$LIBTOOL --help-all], [], [ignore])
AT_CHECK([$LIBTOOL --version], [], [stdout])
AT_CHECK([grep 'Copyright.*Free Software Foundation' stdout], [], [ignore])
+AT_CHECK([$LIBTOOL], [1], [ignore], [stderr])
+AT_CHECK([grep 'specify a MODE' stderr], [], [ignore])
+AT_CHECK([grep ' --help' stderr], [], [ignore])
+
AT_CLEANUP