]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
getopt: remove hack for special handling of "-" argument
authorStefano Lattarini <stefano.lattarini@gmail.com>
Sun, 15 Jan 2012 08:54:22 +0000 (09:54 +0100)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Sun, 15 Jan 2012 17:07:04 +0000 (18:07 +0100)
Older versions of Getopt::Long acted bogusly and died when they
where configured with the 'bundling' flag and an argument '-' was
seen on the command line they were parsing.  That is no longer
the case though, and has not been for quite a long time: the bug
is no longer present in the 5.6.2 version of perl and the 2.25
version of Getopt::Long (and today, the latest versions of perl
and Getopt::Long are respectively 5.14.2 and 2.38).  The obsolete
workaround for that Getopt::Long bug can thus be removed from our
'getopt' function.

It is also worth noting that such a workaround was quite buggy
and brittle itself; for example, a command like this:
  "autom4te --output -"
would have caused the incorrect diagnostic:
  "autom4te: option `--output' requires an argument"
Much worse, a command like this:
  "autom4te --language=autoconf --output - configure.ac"
would have caused the standard input of autom4te to be processed
and copied into the 'configure.ac' file, deleting its pre-existing
content!  Surely not what a user would have expected.

After this change, a command like this:
  autom4te --language=autoconf --output - - <configure.ac >out
works as expected, processing the input from 'configure.ac' and
writing it to the 'out' file.

* lib/Autom4te/General.pm (use): Require perl version 5.6.2.
(getopt): Remove the old workaround.

ChangeLog
lib/Autom4te/General.pm

index 2ab830e9dd1cc5a2ea234a61fdb9cfe3ab39821d..4adfc58994ce8ef32ab300ae996454ea343290c0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,36 @@
+2011-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       getopt: remove hack for special handling of "-" argument
+
+       Older versions of Getopt::Long acted bogusly and died when they
+       where configured with the 'bundling' flag and an argument '-' was
+       seen on the command line they were parsing.  That is no longer
+       the case though, and has not been for quite a long time: the bug
+       is no longer present in the 5.6.2 version of perl and the 2.25
+       version of Getopt::Long (and today, the latest versions of perl
+       and Getopt::Long are respectively 5.14.2 and 2.38).  The obsolete
+       workaround for that Getopt::Long bug can thus be removed from our
+       'getopt' function.
+
+       It is also worth noting that such a workaround was quite buggy
+       and brittle itself; for example, a command like this:
+         "autom4te --output -"
+       would have caused the incorrect diagnostic:
+         "autom4te: option `--output' requires an argument"
+       Much worse, a command like this:
+         "autom4te --language=autoconf --output - configure.ac"
+       would have caused the standard input of autom4te to be processed
+       and copied into the 'configure.ac' file, deleting its pre-existing
+       content!  Surely not what a user would have expected.
+
+       After this change, a command like this:
+         autom4te --language=autoconf --output - - <configure.ac >out
+       works as expected, processing the input from 'configure.ac' and
+       writing it to the 'out' file.
+
+       * lib/Autom4te/General.pm (use): Require perl version 5.6.2.
+       (getopt): Remove the old workaround.
+
 2012-01-15  Jim Meyering  <meyering@redhat.com>
 
        avoid new warning about undefined $ARGV[0]
index 2379ce3261d81cb943e235d2d86abfc8a02ee9ab..e427aa79259b6eb51abd77cf09512e30ae85f25f 100644 (file)
@@ -32,7 +32,7 @@ used in several executables of the Autoconf and Automake packages.
 
 =cut
 
-use 5.005_03;
+use 5.006_002;
 use Exporter;
 use Autom4te::ChannelDefs;
 use Autom4te::Channels;
@@ -244,16 +244,11 @@ rejecting it as a broken option.
 # getopt (%OPTION)
 # ----------------
 # Handle the %OPTION, plus all the common options.
-# Work around Getopt bugs wrt `-'.
 sub getopt (%)
 {
   my (%option) = @_;
   use Getopt::Long;
 
-  # F*k.  Getopt seems bogus and dies when given `-' with `bundling'.
-  # If fixed some day, use this: '' => sub { push @ARGV, "-" }
-  my $stdin = grep /^-$/, @ARGV;
-  @ARGV = grep !/^-$/, @ARGV;
   %option = ("h|help"     => sub { print $help; exit 0 },
             "V|version"  => sub { print $version; exit 0 },
 
@@ -297,9 +292,6 @@ sub getopt (%)
        }
     }
 
-  push @ARGV, '-'
-    if $stdin;
-
   setup_channel 'note', silent => !$verbose;
   setup_channel 'verb', silent => !$verbose;
 }