[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11b-27-ge0ce774,
Jim Meyering <=