automake-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11b-27-


From: Jim Meyering
Subject: [Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11b-27-ge0ce774
Date: Mon, 16 Apr 2012 06:31:05 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".

http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=e0ce774e6927c4e2121fe92ae47a72a24e470d5e

The branch, master has been updated
       via  e0ce774e6927c4e2121fe92ae47a72a24e470d5e (commit)
      from  944ec778e4bb30fed061b86d7859555c7a29fa6f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit e0ce774e6927c4e2121fe92ae47a72a24e470d5e
Author: Jim Meyering <address@hidden>
Date:   Sun Apr 15 18:44:50 2012 +0200

    build: use latest help2man, but without locale support
    
    * doc/help2man: Update to latest (1.40.8), but built with
    --disable-nls, which elides the less-portable locale-related
    code, and with the "use 5.008" manually changed to "use 5.006".
    Thanks to Brendan O'Dea for the tips.
    * THANKS: Update Brendan's address.

-----------------------------------------------------------------------

Summary of changes:
 THANKS       |    2 +-
 doc/help2man |  247 ++++++++++++++++++++++++++++++++-------------------------
 2 files changed, 140 insertions(+), 109 deletions(-)

diff --git a/THANKS b/THANKS
index e2b65b2..16367e1 100644
--- a/THANKS
+++ b/THANKS
@@ -47,7 +47,7 @@ Bob Proulx            address@hidden
 Bob Rossi              address@hidden
 Bobby Jack             address@hidden
 Braden N. McDaniel     address@hidden
-Brendan O'Dea          address@hidden
+Brendan O'Dea          address@hidden
 Brian Cameron          address@hidden
 Brian Ford             address@hidden
 Brian Gough            address@hidden
diff --git a/doc/help2man b/doc/help2man
index 01e690b..45cb182 100755
--- a/doc/help2man
+++ b/doc/help2man
@@ -1,12 +1,12 @@
 #!/usr/bin/perl -w
 
 # Generate a short man page from --help and --version output.
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2009,
+# 2010, 2011, 2012 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 2, or (at your option)
+# the Free Software Foundation; either version 3, or (at your option)
 # any later version.
 
 # This program is distributed in the hope that it will be useful,
@@ -15,65 +15,46 @@
 # 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, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 
 # Written by Brendan O'Dea <address@hidden>
 # Available from ftp://ftp.gnu.org/gnu/help2man/
 
-use 5.005;
+use 5.006;
 use strict;
 use Getopt::Long;
 use Text::Tabs qw(expand);
 use POSIX qw(strftime setlocale LC_ALL);
-use locale;
 
 my $this_program = 'help2man';
-my $this_version = '1.36';
+my $this_version = '1.40.8';
 
-my $have_gettext;
-BEGIN {
-    eval {
-       require Locale::gettext;
-       Locale::gettext->import;
-       $have_gettext = 1;
-    };
-
-    unless ($have_gettext)
-    {
-       *gettext = sub { $_[0] };
-       *textdomain = sub {};
-    }
+sub _ { $_[0] }
+sub configure_locale
+{
+    my $locale = shift;
+    die "$this_program: no locale support (Locale::gettext required)\n"
+       unless $locale eq 'C';
 }
 
-sub _ { gettext @_ }
+sub dec { $_[0] }
+sub enc { $_[0] }
+sub enc_user { $_[0] }
+sub kark { die +(sprintf shift, @_), "\n" }
 sub N_ { $_[0] }
 
-textdomain $this_program;
-{
-    my ($user_locale) = grep defined && length,
-       (map $ENV{$_}, qw(LANGUAGE LC_ALL LC_MESSAGES LANG)), 'C';
-
-    sub kark # die with message formatted in the invoking user's locale
-    {
-       setlocale LC_ALL, $user_locale;
-       my $fmt = gettext shift;
-       die +(sprintf $fmt, @_), "\n";
-    }
-}
-
-my $version_info = sprintf _(<<'EOT'), $this_program, $this_version;
+my $version_info = enc_user sprintf _(<<'EOT'), $this_program, $this_version;
 GNU %s %s
 
-Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
-Software Foundation, Inc.
+Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2009, 2010,
+2011, 2012 Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 Written by Brendan O'Dea <address@hidden>
 EOT
 
-my $help_info = sprintf _(<<'EOT'), $this_program, $this_program;
+my $help_info = enc_user sprintf _(<<'EOT'), $this_program, $this_program;
 `%s' generates a man page out of `--help' and `--version' output.
 
 Usage: %s [OPTION]... EXECUTABLE
@@ -88,14 +69,17 @@ Usage: %s [OPTION]... EXECUTABLE
  -o, --output=FILE       send output to `FILE'
  -p, --info-page=TEXT    name of Texinfo manual
  -N, --no-info           suppress pointer to Texinfo manual
+ -l, --libtool           exclude the `lt-' from the program name
      --help              print this help, then exit
      --version           print version number, then exit
 
-EXECUTABLE should accept `--help' and `--version' options although
-alternatives may be specified using:
+EXECUTABLE should accept `--help' and `--version' options and produce output on
+stdout although alternatives may be specified using:
 
  -h, --help-option=STRING     help option string
  -v, --version-option=STRING  version option string
+ --version-string=STRING      version string
+ --no-discard-stderr          include stderr when parsing option output
 
 Report bugs to <address@hidden>.
 EOT
@@ -103,44 +87,35 @@ EOT
 my $section = 1;
 my $manual = '';
 my $source = '';
-my $locale = 'C';
 my $help_option = '--help';
 my $version_option = '--version';
-my ($opt_name, @opt_include, $opt_output, $opt_info, $opt_no_info);
+my $discard_stderr = 1;
+my ($opt_name, @opt_include, $opt_output, $opt_info, $opt_no_info, 
$opt_libtool,
+    $version_text);
 
 my %opt_def = (
     'n|name=s'          => \$opt_name,
     's|section=s'       => \$section,
     'm|manual=s'        => \$manual,
     'S|source=s'        => \$source,
-    'L|locale=s'        => \$locale,
+    'L|locale=s'        => sub { configure_locale pop },
     'i|include=s'       => sub { push @opt_include, [ pop, 1 ] },
     'I|opt-include=s'   => sub { push @opt_include, [ pop, 0 ] },
     'o|output=s'        => \$opt_output,
     'p|info-page=s'     => \$opt_info,
     'N|no-info'                 => \$opt_no_info,
+    'l|libtool'                 => \$opt_libtool,
+    'help'              => sub { print $help_info; exit },
+    'version'           => sub { print $version_info; exit },
     'h|help-option=s'   => \$help_option,
     'v|version-option=s' => \$version_option,
+    'version-string=s'  => \$version_text,
+    'discard-stderr!'   => \$discard_stderr,
 );
 
 # Parse options.
 Getopt::Long::config('bundling');
-GetOptions (%opt_def,
-    help    => sub { print $help_info; exit },
-    version => sub { print $version_info; exit },
-) or die $help_info;
-
-die $help_info unless @ARGV == 1;
-
-die "$this_program: no locale support (Locale::gettext required)\n"
-    unless $locale eq 'C' or $have_gettext;
-
-# Add default territory to locale.
-$locale .= "_\U$locale" if $locale =~ /^[a-z]{2}$/;
-
-# Set localisation of date and executable's ouput.
-delete @ENV{qw(LANGUAGE LC_MESSAGES LANG)};
-setlocale LC_ALL, $ENV{LC_ALL} = $locale;
+die $help_info unless GetOptions %opt_def and @ARGV == 1;
 
 my %include = ();
 my %append = ();
@@ -170,8 +145,12 @@ while (@opt_include)
 
     while (<INC>)
     {
+       # Convert input to internal Perl format, so that multibyte
+       # sequences are treated as single characters.
+       $_ = dec $_;
+
        # [section]
-       if (/^\[([^]]+)\]/)
+       if (/^\[([^]]+)\]\s*$/)
        {
            $key = uc $1;
            $key =~ s/^\s+//;
@@ -182,7 +161,7 @@ while (@opt_include)
        }
 
        # /pattern/
-       if (m!^/(.*)/([ims]*)!)
+       if (m!^/(.*)/([ims]*)\s*$!)
        {
            my $pat = $2 ? "(?$2)$1" : $1;
 
@@ -229,14 +208,17 @@ for my $hash (\(%include, %append))
     for (keys %$hash) { $hash->{$_} =~ s/\n+$/\n/ }
 }
 
-# Grab help and version info from executable.
-my ($help_text, $version_text) = map {
-    join '', map { s/ +$//; expand $_ } `$ARGV[0] $_ 2>/dev/null`
-       or kark N_("%s: can't get `%s' info from %s"), $this_program,
-           $_, $ARGV[0]
-} $help_option, $version_option;
+sub get_option_value;
 
-my $date = strftime "%B %Y", localtime;
+# Grab help and version info from executable.
+my $help_text   = get_option_value $ARGV[0], $help_option;
+$version_text ||= get_option_value $ARGV[0], $version_option;
+
+# Translators: the following message is a strftime(3) format string, which in
+# the English version expands to the month as a word and the full year.  It
+# is used on the footer of the generated manual pages.  If in doubt, you may
+# just use %x as the value (which should be the full locale-specific date).
+my $date = enc strftime _("%B %Y"), localtime;
 (my $program = $ARGV[0]) =~ s!.*/!!;
 my $package = $program;
 my $version;
@@ -259,9 +241,9 @@ if ($opt_output)
 #   <program> ({GNU,Free} <package>) <version>
 #   <program> - {GNU,Free} <package> <version>
 #
-# and seperated from any copyright/author details by a blank line.
+# and separated from any copyright/author details by a blank line.
 
-($_, $version_text) = split /\n+/, $version_text, 2;
+($_, $version_text) = ((split /\n+/, $version_text, 2), '');
 
 if (/^(\S+) +\(((?:GNU|Free) +[^)]+)\) +(.*)/ or
     /^(\S+) +- *((?:GNU|Free) +\S+) +(.*)/)
@@ -286,6 +268,9 @@ $program =~ s!.*/!!;
 # No info for `info' itself.
 $opt_no_info = 1 if $program eq 'info';
 
+# Translators: "NAME", "SYNOPSIS" and other one or two word strings in all
+# upper case are manual page section headings.  The man(1) manual page in your
+# language, if available should provide the conventional translations.
 for ($include{_('NAME')})
 {
     if ($opt_name) # --name overrides --include contents.
@@ -312,13 +297,19 @@ unless ($manual)
 {
     for ($section)
     {
-       if (/^(1[Mm]|8)/) { $manual = _('System Administration Utilities') }
-       elsif (/^6/)      { $manual = _('Games') }
-       else              { $manual = _('User Commands') }
+       if (/^(1[Mm]|8)/) { $manual = enc _('System Administration Utilities') }
+       elsif (/^6/)      { $manual = enc _('Games') }
+       else              { $manual = enc _('User Commands') }
     }
 }
 
 # Extract usage clause(s) [if any] for SYNOPSIS.
+# Translators: "Usage" and "or" here are patterns (regular expressions) which
+# are used to match the usage synopsis in program output.  An example from cp
+# (GNU coreutils) which contains both strings:
+#  Usage: cp [OPTION]... [-T] SOURCE DEST
+#    or:  cp [OPTION]... SOURCE... DIRECTORY
+#    or:  cp [OPTION]... -t DIRECTORY SOURCE...
 my $PAT_USAGE = _('Usage');
 my $PAT_USAGE_CONT = _('or');
 if ($help_text =~ s/^($PAT_USAGE):( +(\S+))(.*)((?:\n(?: {6}\1| 
*($PAT_USAGE_CONT): +\S).*)*)//om)
@@ -336,6 +327,7 @@ if ($help_text =~ s/^($PAT_USAGE):( +(\S+))(.*)((?:\n(?: 
{6}\1| *($PAT_USAGE_CON
     {
        $synopsis .= ".br\n" if $synopsis;
        s!^\S*/!!;
+       s/^lt-// if $opt_libtool;
        s/^(\S+) *//;
        $synopsis .= ".B $1\n";
        s/\s+$//;
@@ -372,14 +364,28 @@ s/^\./\x80/mg;
 s/^'/\x81/mg;
 s/\\/\x82/g;
 
-my $PAT_BUGS           = _('Report +bugs|Email +bug +reports +to');
+# Translators: patterns are used to match common program output. In the source
+# these strings are all of the form of "my $PAT_something = _('...');" and are
+# regular expressions.  If there is more than one commonly used string, you
+# may separate alternatives with "|".  Spaces in these expressions are written
+# as " +" to indicate that more than one space may be matched.  The string
+# "(?:[\\w-]+ +)?" in the bug reporting pattern is used to indicate an
+# optional word, so that either "Report bugs" or "Report _program_ bugs" will
+# be matched.
+my $PAT_BUGS           = _('Report +(?:[\w-]+ +)?bugs|Email +bug +reports 
+to');
 my $PAT_AUTHOR         = _('Written +by');
 my $PAT_OPTIONS                = _('Options');
+my $PAT_ENVIRONMENT    = _('Environment');
+my $PAT_FILES          = _('Files');
 my $PAT_EXAMPLES       = _('Examples');
 my $PAT_FREE_SOFTWARE  = _('This +is +free +software');
 
 # Start a new paragraph (if required) for these.
-s/([^\n])\n($PAT_BUGS|$PAT_AUTHOR)/$1\n\n$2/og;
+s/([^\n])\n($PAT_BUGS|$PAT_AUTHOR) /$1\n\n$2 /og;
+
+# Convert iso-8859-1 copyright symbol or (c) to nroff
+# character.
+s/^Copyright +(?:\xa9|\([Cc]\))/Copyright \\(co/mg;
 
 sub convert_option;
 
@@ -391,6 +397,16 @@ while (length)
        $sect = _('OPTIONS');
        next;
     }
+    if (s/^($PAT_ENVIRONMENT): *\n//o)
+    {
+       $sect = _('ENVIRONMENT');
+       next;
+    }
+    if (s/^($PAT_FILES): *\n//o)
+    {
+       $sect = _('FILES');
+       next;
+    }
     elsif (s/^($PAT_EXAMPLES): *\n//o)
     {
        $sect = _('EXAMPLES');
@@ -398,36 +414,13 @@ while (length)
     }
 
     # Copyright section
-    if (/^Copyright +[(\xa9]/)
+    if (/^Copyright /)
     {
        $sect = _('COPYRIGHT');
-       $include{$sect} ||= '';
-       $include{$sect} .= ".PP\n" if $include{$sect};
-
-       my $copy;
-       ($copy, $_) = split /\n\n/, $_, 2;
-
-       for ($copy)
-       {
-           # Add back newline
-           s/\n*$/\n/;
-
-           # Convert iso9959-1 copyright symbol or (c) to nroff
-           # character.
-           s/^Copyright +(?:\xa9|\([Cc]\))/Copyright \\(co/mg;
-
-           # Insert line breaks before additional copyright messages
-           # and the disclaimer.
-           s/(.)\n(Copyright |$PAT_FREE_SOFTWARE)/$1\n.br\n$2/og;
-       }
-
-       $include{$sect} .= $copy;
-       $_ ||= '';
-       next;
     }
 
-    # Catch bug report text.
-    if (/^($PAT_BUGS) /o)
+    # Bug reporting section.
+    elsif (/^($PAT_BUGS) /o)
     {
        $sect = _('REPORTING BUGS');
     }
@@ -518,7 +511,7 @@ while (length)
     while ($indent ? s/^ {$indent}(\S.*)\n// : s/^(\S.*)\n//)
     {
        $matched .= $& if %append;
-       $content .= "\x84$1\n"
+       $content .= "\x84$1\n";
     }
 
     # Move to next paragraph.
@@ -536,6 +529,22 @@ while (length)
 
        # Escape remaining hyphens
        s/-/\x83/g;
+
+       if ($sect eq 'COPYRIGHT')
+       {
+           # Insert line breaks before additional copyright messages
+           # and the disclaimer.
+           s/\n(Copyright |$PAT_FREE_SOFTWARE)/\n.br\n$1/og;
+       }
+       elsif ($sect eq 'REPORTING BUGS')
+       {
+           # Handle multi-line bug reporting sections of the form:
+           #
+           #   Report <program> bugs to <addr>
+           #   GNU <package> home page: <url>
+           #   ...
+           s/\n([[:upper:]])/\n.br\n$1/g;
+       }
     }
 
     # Check if matched paragraph contains /pat/.
@@ -585,7 +594,7 @@ EOT
 
 # Section ordering.
 my @pre = (_('NAME'), _('SYNOPSIS'), _('DESCRIPTION'), _('OPTIONS'),
-    _('EXAMPLES'));
+    _('ENVIRONMENT'), _('FILES'), _('EXAMPLES'));
 
 my @post = (_('AUTHOR'), _('REPORTING BUGS'), _('COPYRIGHT'), _('SEE ALSO'));
 my $filter = join '|', @pre, @post;
@@ -595,9 +604,8 @@ for my $sect (@pre, (grep ! /^($filter)$/o, @include), 
@post)
 {
     if ($include{$sect})
     {
-       my $lsect = gettext $sect;
-       my $quote = $lsect =~ /\W/ ? '"' : '';
-       print ".SH $quote$lsect$quote\n";
+       my $quote = $sect =~ /\W/ ? '"' : '';
+       print enc ".SH $quote$sect$quote\n";
 
        for ($include{$sect})
        {
@@ -611,7 +619,7 @@ for my $sect (@pre, (grep ! /^($filter)$/o, @include), 
@post)
            # Convert some latin1 chars to troff equivalents
            s/\xa0/\\ /g; # non-breaking space
 
-           print;
+           print enc $_;
        }
     }
 }
@@ -621,6 +629,29 @@ close STDOUT or kark N_("%s: error writing to %s (%s)"), 
$this_program,
 
 exit;
 
+# Call program with given option and return results.
+sub get_option_value
+{
+    my ($prog, $opt) = @_;
+    my $stderr = $discard_stderr ? '/dev/null' : '&1';
+    my $value = join '',
+       map { s/ +$//; expand $_ }
+       map { dec $_ }
+       `$prog $opt 2>$stderr`;
+
+    unless ($value)
+    {
+       my $err = N_("%s: can't get `%s' info from %s%s");
+       my $extra = $discard_stderr
+           ? "\n" . N_("Try `--no-discard-stderr' if option outputs to stderr")
+           : '';
+
+       kark $err, $this_program, $opt, $prog, $extra;
+    }
+
+    return $value;
+}
+
 # Convert option dashes to \- to stop nroff from hyphenating 'em, and
 # embolden.  Option arguments get italicised.
 sub convert_option


hooks/post-receive
-- 
GNU Automake



reply via email to

[Prev in Thread] Current Thread [Next in Thread]