Hash :
74673d1c
Author :
Date :
2020-09-11T18:03:19
Consistently use ‘our’ instead of ‘use vars’. At file scope of a file containing at most one ‘package’ declaration, ‘use vars’ is exactly equivalent to ‘our’, and the latter is preferred starting with Perl 5.6.0, which happens to be the oldest version we support. (This change has nothing to do with the previous two, but I want to make the same change in Autoconf and that means doing it here for all the files synced from Automake.) (I don’t know why, but this change exposed a latent bug in FileUtils.pm where the last pod block in the file didn’t have a ‘=cut’ delimiter, so the code after it was considered documentation, causing ‘require FileUtils’ to fail.) * lib/Automake/ChannelDefs.pm * lib/Automake/Channels.pm * lib/Automake/Condition.pm * lib/Automake/Configure_ac.pm * lib/Automake/DisjConditions.pm * lib/Automake/FileUtils.pm * lib/Automake/General.pm * lib/Automake/Getopt.pm * lib/Automake/Options.pm * lib/Automake/Rule.pm * lib/Automake/RuleDef.pm * lib/Automake/VarDef.pm * lib/Automake/Variable.pm * lib/Automake/Wrap.pm * lib/Automake/XFile.pm: Replace all uses of ‘use vars’ with ‘our’. * lib/Automake/FileUtils.pm: Add missing ‘=cut’ to a pod block near the end of the file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
# Copyright (C) 2012-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
package Automake::Getopt;
=head1 NAME
Automake::Getopt - GCS conforming parser for command line options
=head1 SYNOPSIS
use Automake::Getopt;
=head1 DESCRIPTION
Export a function C<parse_options>, performing parsing of command
line options in conformance to the GNU Coding standards.
=cut
use 5.006;
use strict;
use warnings FATAL => 'all';
use Carp qw (confess croak);
use Exporter ();
use Getopt::Long ();
use Automake::ChannelDefs qw (fatal);
our @ISA = qw (Exporter);
our @EXPORT = qw (getopt);
=item C<parse_options (%option)>
Wrapper around C<Getopt::Long>, trying to conform to the GNU
Coding Standards for error messages.
=cut
sub parse_options (%)
{
my %option = @_;
Getopt::Long::Configure ("bundling", "pass_through");
# Unrecognized options are passed through, so GetOption can only fail
# due to internal errors or misuse of options specification.
Getopt::Long::GetOptions (%option)
or confess "error in options specification (likely)";
if (@ARGV && $ARGV[0] =~ /^-./)
{
my %argopts;
for my $k (keys %option)
{
if ($k =~ /(.*)=s$/)
{
map { $argopts{(length ($_) == 1)
? "-$_" : "--$_" } = 1; } (split (/\|/, $1));
}
}
if ($ARGV[0] eq '--')
{
shift @ARGV;
}
elsif (exists $argopts{$ARGV[0]})
{
fatal ("option '$ARGV[0]' requires an argument\n"
. "Try '$0 --help' for more information.");
}
else
{
fatal ("unrecognized option '$ARGV[0]'.\n"
. "Try '$0 --help' for more information.");
}
}
}
=back
=head1 SEE ALSO
L<Getopt::Long>
=cut
1; # for require