From fb829c2cd1c10f4e0213f05733d6178555c75f3a Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Sat, 23 Oct 1999 13:30:28 +0000 Subject: import version 1.015 --- man/help2man | 326 ++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 178 insertions(+), 148 deletions(-) (limited to 'man') diff --git a/man/help2man b/man/help2man index cc0f5cf5d..b05b74e02 100755 --- a/man/help2man +++ b/man/help2man @@ -18,6 +18,7 @@ # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Written by Brendan O'Dea +# Available from ftp://ftp.gnu.org/gnu/help2man/ use 5.004; use strict; @@ -26,7 +27,7 @@ use Text::Tabs qw(expand); use POSIX qw(strftime setlocale LC_TIME); my $this_program = 'help2man'; -my $this_version = '1.013'; +my $this_version = '1.015'; my $version_info = </dev/null` +# Grab help and version info from executable. +my $help_text = join '', map { expand $_ } `$ARGV[0] --help 2>/dev/null` or die "$this_program: can't get `--help' info from $ARGV[0]\n"; -my @version = paragraphs `$ARGV[0] --version 2>/dev/null` +my $version_text = join '', map { expand $_ } `$ARGV[0] --version 2>/dev/null` or die "$this_program: can't get `--version' info from $ARGV[0]\n"; my $date = strftime "%B %Y", localtime; @@ -165,7 +159,7 @@ if ($opt_output) # # and seperated from any copyright/author details by a blank line. -$_ = shift @version; +($_, $version_text) = split /\n+/, $version_text, 2; if (/^(\S+) +\(((?:GNU|Free) +[^)]+)\) +(.*)/ or /^(\S+) +- *((?:GNU|Free) +\S+) +(.*)/) @@ -187,163 +181,193 @@ else $program =~ s!.*/!!; -# no info for `info' itself +# No info for `info' itself. $opt_no_info = 1 if $program eq 'info'; -# --name overrides --include contents -$include{NAME} = "$program \\- $opt_name" if $opt_name; +# --name overrides --include contents. +$include{NAME} = "$program \\- $opt_name\n" if $opt_name; -# Default (useless) NAME paragraph -$include{NAME} ||= "$program \\- manual page for $program $version"; +# Default (useless) NAME paragraph. +$include{NAME} ||= "$program \\- manual page for $program $version\n"; # Man pages traditionally have the page title in caps. my $PROGRAM = uc $program; -# Header. -print < are + # rendered in a constant width font. + if (/^( +)([\$\%>] )\S/) { - print qq(.SH "REPORTING BUGS"\n$_\n); - $break = ''; + my $indent = $1; + my $prefix = $2; + my $break = '.IP'; + $include{$sect} ||= ''; + while (s/^$indent\Q$prefix\E(\S.*)\n*//) + { + $include{$sect} .= "$break\n\\f(CW$prefix$1\\fR\n"; + $break = '.br'; + } + next; } - # Option subsections have second line indented. - if (s/^(\S.*)\n / /) + $include{$sect} ||= ''; + # Sub-sections have a trailing colon and the second line indented. + if (s/^(\S.*:) *\n / /) { - print qq(.SS "$1"\n); - $break = ''; + $include{$sect} .= qq(.SS "$1"\n); } - my $output = ''; - while (length) - { - my $indent = 0; + my $indent = 0; + my $content = ''; - # Tagged paragraph - if (s/^( +(\S.*?) +)(\S.*)\n?//) - { - $indent = length $1; - $output .= ".TP\n$2\n$3\n"; - $break = 1; - } - - # Indented paragraph - elsif (s/^( +)(\S.*)\n?//) - { - $indent = length $1; - $output .= ".IP\n$2\n"; - $break = 1; - } + # Tagged paragraph. + if (s/^( +(\S.*?) +)(\S.*)\n//) + { + $indent = length $1; + $content = ".TP\n\x82$2\n\x82$3\n"; + } - # Left justified paragraph - else - { - s/(.*)\n?//; - $output .= ".PP\n" if $break; - $output .= "$1\n"; - $break = 1; - } + # Indented paragraph. + elsif (s/^( +)(\S.*)\n//) + { + $indent = length $1; + $content .= ".IP\n\x82$2\n"; + } - # Continuations - $output .= "$1\n" while s/^ {$indent}(\S.*)\n?//; + # Left justified paragraph. + else + { + s/(.*)\n//; + $content = ".PP\n" if $include{$sect}; + $content .= "$1\n"; } - $_ = $output; + # Append continuations. + $content .= "$1\n" while s/^ {$indent}(\S.*)\n//; - # Escape backslashes. - s/\\/\\e/g; + # Move to next paragraph. + s/^\n+//; - # Convert options. - s/(^| )(-[][\w=-]+)/$1 . convert_option $2/mge; - print; -} + for ($content) + { + # Leading dot protection. + s/\x82\./\x80/g; + s/\x82//g; -# Print any include items other than the ones we have already dealt -# with. -for (@include) -{ - print qq(.SH "$_"\n$include{$_}) - unless /^(NAME|SYNOPSIS|DESCRIPTION|SEE ALSO)$/; + # Convert options. + s/(^| )(-[][\w=-]+)/$1 . convert_option $2/mge; + } + + $include{$sect} .= $content; } # Refer to the real documentation. -if ($include{'SEE ALSO'} or !$opt_no_info) +unless ($opt_no_info) { - print qq(.SH "SEE ALSO"\n); - print $include{'SEE ALSO'}, ".PP\n" if $include{'SEE ALSO'}; - - print <