diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | configure.in | 7 | ||||
-rw-r--r-- | man/ChangeLog | 30 | ||||
-rw-r--r-- | man/Makefile.am | 83 | ||||
-rw-r--r-- | man/gettext.x | 6 | ||||
-rwxr-xr-x | man/help2man | 530 | ||||
-rw-r--r-- | man/msgcat.x | 4 | ||||
-rw-r--r-- | man/msgcmp.x | 4 | ||||
-rw-r--r-- | man/msgcomm.x | 4 | ||||
-rw-r--r-- | man/msgconv.x | 4 | ||||
-rw-r--r-- | man/msgen.x | 4 | ||||
-rw-r--r-- | man/msgfmt.x | 4 | ||||
-rw-r--r-- | man/msggrep.x | 4 | ||||
-rw-r--r-- | man/msgmerge.x | 4 | ||||
-rw-r--r-- | man/msgsed.x | 4 | ||||
-rw-r--r-- | man/msgunfmt.x | 4 | ||||
-rw-r--r-- | man/ngettext.x | 8 | ||||
-rw-r--r-- | man/xgettext.x | 4 |
18 files changed, 708 insertions, 4 deletions
@@ -1,5 +1,9 @@ 2001-06-10 Bruno Haible <haible@clisp.cons.org> + * configure.in: Add test for cross compilation and for PERL. + +2001-06-10 Bruno Haible <haible@clisp.cons.org> + * configure.in: Bump version number to 0.11. 2001-06-10 Bruno Haible <haible@clisp.cons.org> diff --git a/configure.in b/configure.in index be26b04..944cf95 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.13) -AC_REVISION($Revision: 1.31 $) +AC_REVISION($Revision: 1.32 $) AC_INIT(src/msgfmt.c) AM_INIT_AUTOMAKE(gettext, 0.11) RELEASE_DATE=2001-05-23 dnl in "date +%Y-%m-%d" format @@ -99,6 +99,11 @@ AC_PATH_PROG(DVIPS, dvips, $ac_aux_dir_abs/missing dvips) AC_PATH_PROG(TEXI2PDF, texi2pdf, $ac_aux_dir_abs/missing texi2pdf) AC_PATH_PROG(TEXI2HTML, texi2html, $ac_aux_dir_abs/missing texi2html) +dnl Check for tools needed for formatting man pages. +CROSS_COMPILING=$cross_compiling +AC_SUBST(CROSS_COMPILING) +AC_PATH_PROG(PERL, perl, $ac_aux_dir_abs/missing perl) + dnl Generate the version information file in the intl/ directory. test -d intl || mkdir intl echo "GNU gettext library from $PACKAGE-$VERSION" > intl/VERSION diff --git a/man/ChangeLog b/man/ChangeLog index 81394ba..2672fa5 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,33 @@ +2001-06-10 Bruno Haible <haible@clisp.cons.org> + + * help2man: New file, from help2man-1.24. + * gettext.x: New file. + * msgcat.x: New file. + * msgcmp.x: New file. + * msgcomm.x: New file. + * msgconv.x: New file. + * msgen.x: New file. + * msgfmt.x: New file. + * msggrep.x: New file. + * msgmerge.x: New file. + * msgsed.x: New file. + * msgunfmt.x: New file. + * ngettext.x: New file. + * xgettext.x: New file. + * Makefile.am (man_aux, man_MAN1): New variables. + (man_MANS): Add $(man_MAN1). + (man_HTML): Add *.1.html for all programs. + (EXTRA_DIST): Add help2man, $(man_aux). + (SUFFIXES): Recognize .1 and .x. + (PERL): New variable. + (HELP2MAN): New variable. + (.x.1): New rule. + ($(man_MAN1)): Depend on help2man and configure.in. + (gettext.1.html, ngettext.1.html, msgcmp.1.html, msgfmt.1.html, + msgmerge.1.html, msgunfmt.1.html, xgettext.1.html, msgcat.1.html, + msgcomm.1.html, msgconv.1.html, msgen.1.html, msggrep.1.html, + msgsed.1.html): New rules. + 2001-05-23 Bruno Haible <haible@clisp.cons.org> * gettext-0.10.38 released. diff --git a/man/Makefile.am b/man/Makefile.am index dc1c4d1..ba16c07 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -24,21 +24,40 @@ htmldir = $(docdir) AUTOMAKE_OPTIONS = 1.2 gnits +# A manual page for each of the bin_PROGRAMS in src/Makefile.am. + +man_aux = gettext.x ngettext.x \ +msgcmp.x msgfmt.x msgmerge.x msgunfmt.x xgettext.x \ +msgcat.x msgcomm.x msgconv.x msgen.x msggrep.x msgsed.x + +# Likewise, plus additional manual pages for the libintl functions. + +man_MAN1 = gettext.1 ngettext.1 \ +msgcmp.1 msgfmt.1 msgmerge.1 msgunfmt.1 xgettext.1 \ +msgcat.1 msgcomm.1 msgconv.1 msgen.1 msggrep.1 msgsed.1 man_MAN3 = gettext.3 ngettext.3 \ textdomain.3 bindtextdomain.3 bind_textdomain_codeset.3 man_MAN3IN = gettext.3.in ngettext.3.in \ textdomain.3.in bindtextdomain.3.in bind_textdomain_codeset.3.in -man_MANS = $(man_MAN3) \ +man_MANS = $(man_MAN1) $(man_MAN3) \ dgettext.3 dcgettext.3 dngettext.3 dcngettext.3 -man_HTML = gettext.3.html ngettext.3.html \ +man_HTML = gettext.1.html ngettext.1.html \ +msgcmp.1.html msgfmt.1.html msgmerge.1.html msgunfmt.1.html xgettext.1.html \ +msgcat.1.html msgcomm.1.html msgconv.1.html msgen.1.html msggrep.1.html msgsed.1.html \ +gettext.3.html ngettext.3.html \ textdomain.3.html bindtextdomain.3.html bind_textdomain_codeset.3.html -EXTRA_DIST = $(man_MANS) $(man_MAN3IN) $(man_HTML) +EXTRA_DIST = help2man $(man_aux) $(man_MANS) $(man_MAN3IN) $(man_HTML) MAINTAINERCLEANFILES = $(man_MAN1) $(man_MAN3) $(man_HTML) +SUFFIXES = .1 .x +PERL = @PERL@ RM = rm -f +# help2man 1.24 or newer. +HELP2MAN = $(PERL) -w -- $(srcdir)/help2man + # groff 1.17 or newer. MAN2HTML = groff -mandoc -Thtml @@ -56,6 +75,25 @@ uninstall-local: uninstall-html # Man pages. +# The progname.x files contain some extra information not found in the +# "progname --help" output. +.x.1: + @progname=`basename $@ .1`; \ + executable=../src/$$progname; \ + case "$(PERL)" in *"/missing perl") perlok=no;; *) perlok=yes;; esac; \ + if test @CROSS_COMPILING@ = no && test -f $$executable && test $$perlok = yes; then \ + echo "Updating man page $@"; \ + echo "$(HELP2MAN) --include=$$progname.x $$executable > $$progname.1"; \ + rm -f t-$$progname.1; \ + $(HELP2MAN) --include=$$progname.x $$executable > t-$$progname.1 || exit 1; \ + mv t-$$progname.1 $$progname.1; \ + else \ + echo "WARNING: The man page $@ cannot be updated yet."; \ + fi + +# Depend on configure.in to get version number changes. +$(man_MAN1): help2man $(top_srcdir)/configure.in + gettext.3: gettext.3.in $(top_srcdir)/configure.in sed -e 's/@''VERSION''@/@VERSION@/g' < $(srcdir)/gettext.3.in > t-$@ mv t-$@ $@ @@ -77,6 +115,45 @@ bind_textdomain_codeset.3: bind_textdomain_codeset.3.in $(top_srcdir)/configure. html: $(man_HTML) +gettext.1.html: gettext.1 + $(MAN2HTML) `if test -f gettext.1; then echo .; else echo $(srcdir); fi`/gettext.1 > t-$@ + mv t-$@ $@ +ngettext.1.html: ngettext.1 + $(MAN2HTML) `if test -f ngettext.1; then echo .; else echo $(srcdir); fi`/ngettext.1 > t-$@ + mv t-$@ $@ +msgcmp.1.html: msgcmp.1 + $(MAN2HTML) `if test -f msgcmp.1; then echo .; else echo $(srcdir); fi`/msgcmp.1 > t-$@ + mv t-$@ $@ +msgfmt.1.html: msgfmt.1 + $(MAN2HTML) `if test -f msgfmt.1; then echo .; else echo $(srcdir); fi`/msgfmt.1 > t-$@ + mv t-$@ $@ +msgmerge.1.html: msgmerge.1 + $(MAN2HTML) `if test -f msgmerge.1; then echo .; else echo $(srcdir); fi`/msgmerge.1 > t-$@ + mv t-$@ $@ +msgunfmt.1.html: msgunfmt.1 + $(MAN2HTML) `if test -f msgunfmt.1; then echo .; else echo $(srcdir); fi`/msgunfmt.1 > t-$@ + mv t-$@ $@ +xgettext.1.html: xgettext.1 + $(MAN2HTML) `if test -f xgettext.1; then echo .; else echo $(srcdir); fi`/xgettext.1 > t-$@ + mv t-$@ $@ +msgcat.1.html: msgcat.1 + $(MAN2HTML) `if test -f msgcat.1; then echo .; else echo $(srcdir); fi`/msgcat.1 > t-$@ + mv t-$@ $@ +msgcomm.1.html: msgcomm.1 + $(MAN2HTML) `if test -f msgcomm.1; then echo .; else echo $(srcdir); fi`/msgcomm.1 > t-$@ + mv t-$@ $@ +msgconv.1.html: msgconv.1 + $(MAN2HTML) `if test -f msgconv.1; then echo .; else echo $(srcdir); fi`/msgconv.1 > t-$@ + mv t-$@ $@ +msgen.1.html: msgen.1 + $(MAN2HTML) `if test -f msgen.1; then echo .; else echo $(srcdir); fi`/msgen.1 > t-$@ + mv t-$@ $@ +msggrep.1.html: msggrep.1 + $(MAN2HTML) `if test -f msggrep.1; then echo .; else echo $(srcdir); fi`/msggrep.1 > t-$@ + mv t-$@ $@ +msgsed.1.html: msgsed.1 + $(MAN2HTML) `if test -f msgsed.1; then echo .; else echo $(srcdir); fi`/msgsed.1 > t-$@ + mv t-$@ $@ gettext.3.html: gettext.3.in $(MAN2HTML) $(srcdir)/gettext.3.in > t-$@ mv t-$@ $@ diff --git a/man/gettext.x b/man/gettext.x new file mode 100644 index 0000000..81964c2 --- /dev/null +++ b/man/gettext.x @@ -0,0 +1,6 @@ +[NAME] +gettext \- translate message +[DESCRIPTION] +.\" Add any additional description here +The \fBgettext\fP program translates a natural language message into the +user's language, by looking up the translation in a message catalog. diff --git a/man/help2man b/man/help2man new file mode 100755 index 0000000..c8821b0 --- /dev/null +++ b/man/help2man @@ -0,0 +1,530 @@ +#!/usr/bin/perl -w + +# Generate a short man page from --help and --version output. +# Copyright © 1997, 1998, 1999, 2000 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) +# 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, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Written by Brendan O'Dea <bod@compusol.com.au> +# Available from ftp://ftp.gnu.org/gnu/help2man/ + +use 5.004; +use strict; +use Getopt::Long; +use Text::Tabs qw(expand); +use POSIX qw(strftime setlocale LC_TIME); + +my $this_program = 'help2man'; +my $this_version = '1.24'; +my $version_info = <<EOT; +GNU $this_program $this_version + +Copyright (C) 1997, 1998, 1999, 2000 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 <bod\@compusol.com.au> +EOT + +my $help_info = <<EOT; +`$this_program' generates a man page out of `--help' and `--version' output. + +Usage: $this_program [OPTION]... EXECUTABLE + + -n, --name=STRING use `STRING' as the description for the NAME paragraph + -s, --section=SECTION use `SECTION' as the section for the man page + -i, --include=FILE include material from `FILE' + -I, --opt-include=FILE include material from `FILE' if it exists + -o, --output=FILE send output to `FILE' + -N, --no-info suppress pointer to Texinfo manual + --help print this help, then exit + --version print version number, then exit + +EXECUTABLE should accept `--help' and `--version' options. + +Report bugs to <bug-help2man\@gnu.org>. +EOT + +my $section = 1; +my ($opt_name, @opt_include, $opt_output, $opt_no_info); +my %opt_def = ( + 'n|name=s' => \$opt_name, + 's|section=s' => \$section, + 'i|include=s' => sub { push @opt_include, [ pop, 1 ] }, + 'I|opt-include=s' => sub { push @opt_include, [ pop, 0 ] }, + 'o|output=s' => \$opt_output, + 'N|no-info' => \$opt_no_info, +); + +# 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; + +my %include = (); +my %append = (); +my @include = (); # retain order given in include file + +# Provide replacement `quote-regex' operator for pre-5.005. +BEGIN { eval q(sub qr { '' =~ $_[0]; $_[0] }) if $] < 5.005 } + +# Process include file (if given). Format is: +# +# [section name] +# verbatim text +# +# or +# +# /pattern/ +# verbatim text +# + +while (@opt_include) +{ + my ($inc, $required) = @{shift @opt_include}; + + next unless -f $inc or $required; + die "$this_program: can't open `$inc' ($!)\n" + unless open INC, $inc; + + my $key; + my $hash = \%include; + + while (<INC>) + { + # [section] + if (/^\[([^]]+)\]/) + { + $key = uc $1; + $key =~ s/^\s+//; + $key =~ s/\s+$//; + $hash = \%include; + push @include, $key unless $include{$key}; + next; + } + + # /pattern/ + if (m!^/(.*)/([ims]*)!) + { + my $pat = $2 ? "(?$2)$1" : $1; + + # Check pattern. + eval { $key = qr($pat) }; + if ($@) + { + $@ =~ s/ at .*? line \d.*//; + die "$inc:$.:$@"; + } + + $hash = \%append; + next; + } + + # Check for options before the first section--anything else is + # silently ignored, allowing the first for comments and + # revision info. + unless ($key) + { + # handle options + if (/^-/) + { + local @ARGV = split; + GetOptions %opt_def; + } + + next; + } + + $hash->{$key} ||= ''; + $hash->{$key} .= $_; + } + + close INC; + + die "$this_program: no valid information found in `$inc'\n" + unless $key; +} + +# Compress trailing blank lines. +for my $hash (\(%include, %append)) +{ + for (keys %$hash) { $hash->{$_} =~ s/\n+$/\n/ } +} + +# Turn off localisation of executable's ouput. +@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3; + +# Turn off localisation of date (for strftime). +setlocale LC_TIME, 'C'; + +# Grab help and version info from executable. +my ($help_text, $version_text) = map { + join '', map { s/ +$//; expand $_ } `$ARGV[0] --$_ 2>/dev/null` + or die "$this_program: can't get `--$_' info from $ARGV[0]\n" +} qw(help version); + +my $date = strftime "%B %Y", localtime; +(my $program = $ARGV[0]) =~ s!.*/!!; +my $package = $program; +my $version; + +if ($opt_output) +{ + unlink $opt_output + or die "$this_program: can't unlink $opt_output ($!)\n" + if -e $opt_output; + + open STDOUT, ">$opt_output" + or die "$this_program: can't create $opt_output ($!)\n"; +} + +# The first line of the --version information is assumed to be in one +# of the following formats: +# +# <version> +# <program> <version> +# {GNU,Free} <program> <version> +# <program> ({GNU,Free} <package>) <version> +# <program> - {GNU,Free} <package> <version> +# +# and seperated from any copyright/author details by a blank line. + +($_, $version_text) = split /\n+/, $version_text, 2; + +if (/^(\S+) +\(((?:GNU|Free) +[^)]+)\) +(.*)/ or + /^(\S+) +- *((?:GNU|Free) +\S+) +(.*)/) +{ + $program = $1; + $package = $2; + $version = $3; +} +elsif (/^((?:GNU|Free) +)?(\S+) +(.*)/) +{ + $program = $2; + $package = $1 ? "$1$2" : $2; + $version = $3; +} +else +{ + $version = $_; +} + +$program =~ s!.*/!!; + +# No info for `info' itself. +$opt_no_info = 1 if $program eq 'info'; + +# --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\n"; + +# Man pages traditionally have the page title in caps. +my $PROGRAM = uc $program; + +# Extract usage clause(s) [if any] for SYNOPSIS. +if ($help_text =~ s/^Usage:( +(\S+))(.*)((?:\n(?: {6}\1| *or: +\S).*)*)//m) +{ + my @syn = $2 . $3; + + if ($_ = $4) + { + s/^\n//; + for (split /\n/) { s/^ *(or: +)?//; push @syn, $_ } + } + + my $synopsis = ''; + for (@syn) + { + $synopsis .= ".br\n" if $synopsis; + s!^\S*/!!; + s/^(\S+) *//; + $synopsis .= ".B $1\n"; + s/\s+$//; + s/(([][]|\.\.+)+)/\\fR$1\\fI/g; + s/^/\\fI/ unless s/^\\fR//; + $_ .= '\fR'; + s/(\\fI)( *)/$2$1/g; + s/\\fI\\fR//g; + s/^\\fR//; + s/\\fI$//; + s/^\./\\&./; + + $synopsis .= "$_\n"; + } + + $include{SYNOPSIS} ||= $synopsis; +} + +# Process text, initial section is DESCRIPTION. +my $sect = 'DESCRIPTION'; +$_ = "$help_text\n\n$version_text"; + +# Normalise paragraph breaks. +s/^\n+//; +s/\n*$/\n/; +s/\n\n+/\n\n/g; + +# Temporarily exchange leading dots, apostrophes and backslashes for +# tokens. +s/^\./\x80/mg; +s/^'/\x81/mg; +s/\\/\x82/g; + +# Start a new paragraph (if required) for these. +s/([^\n])\n(Report +bugs|Email +bug +reports +to|Written +by)/$1\n\n$2/g; + +sub convert_option; + +while (length) +{ + # Convert some standard paragraph names. + if (s/^(Options|Examples): *\n//) + { + $sect = uc $1; + next; + } + + # Copyright section + if (/^Copyright +[(\xa9]/) + { + $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 |This +is +free +software)/$1\n.br\n$2/g; + + # Join hyphenated lines. + s/([A-Za-z])-\n */$1/g; + } + + $include{$sect} .= $copy; + $_ ||= ''; + next; + } + + # Catch bug report text. + if (/^(Report +bugs|Email +bug +reports +to) /) + { + $sect = 'REPORTING BUGS'; + } + + # Author section. + elsif (/^Written +by/) + { + $sect = 'AUTHOR'; + } + + # Examples, indicated by an indented leading $, % or > are + # rendered in a constant width font. + if (/^( +)([\$\%>] )\S/) + { + 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; + } + + my $matched = ''; + $include{$sect} ||= ''; + + # Sub-sections have a trailing colon and the second line indented. + if (s/^(\S.*:) *\n / /) + { + $matched .= $& if %append; + $include{$sect} .= qq(.SS "$1"\n); + } + + my $indent = 0; + my $content = ''; + + # Option with description. + if (s/^( {1,10}([+-]\S.*?))(?:( +)|\n( {20,}))(\S.*)\n//) + { + $matched .= $& if %append; + $indent = length ($4 || "$1$3"); + $content = ".TP\n\x83$2\n\x83$5\n"; + unless ($4) + { + # Indent may be different on second line. + $indent = length $& if /^ {20,}/; + } + } + + # Option without description. + elsif (s/^ {1,10}([+-]\S.*)\n//) + { + $matched .= $& if %append; + $content = ".HP\n\x83$1\n"; + $indent = 80; # not continued + } + + # Indented paragraph with tag. + elsif (s/^( +(\S.*?) +)(\S.*)\n//) + { + $matched .= $& if %append; + $indent = length $1; + $content = ".TP\n\x83$2\n\x83$3\n"; + } + + # Indented paragraph. + elsif (s/^( +)(\S.*)\n//) + { + $matched .= $& if %append; + $indent = length $1; + $content = ".IP\n\x83$2\n"; + } + + # Left justified paragraph. + else + { + s/(.*)\n//; + $matched .= $& if %append; + $content = ".PP\n" if $include{$sect}; + $content .= "$1\n"; + } + + # Append continuations. + while (s/^ {$indent}(\S.*)\n//) + { + $matched .= $& if %append; + $content .= "\x83$1\n" + } + + # Move to next paragraph. + s/^\n+//; + + for ($content) + { + # Leading dot and apostrophe protection. + s/\x83\./\x80/g; + s/\x83'/\x81/g; + s/\x83//g; + + # Convert options. + s/(^| )(-[][\w=-]+)/$1 . convert_option $2/mge; + } + + # Check if matched paragraph contains /pat/. + if (%append) + { + for my $pat (keys %append) + { + if ($matched =~ $pat) + { + $content .= ".PP\n" unless $append{$pat} =~ /^\./; + $content .= $append{$pat}; + } + } + } + + $include{$sect} .= $content; +} + +# Refer to the real documentation. +unless ($opt_no_info) +{ + $sect = 'SEE ALSO'; + $include{$sect} ||= ''; + $include{$sect} .= ".PP\n" if $include{$sect}; + $include{$sect} .= <<EOT; +The full documentation for +.B $program +is maintained as a Texinfo manual. If the +.B info +and +.B $program +programs are properly installed at your site, the command +.IP +.B info $program +.PP +should give you access to the complete manual. +EOT +} + +# Output header. +print <<EOT; +.\\" DO NOT MODIFY THIS FILE! It was generated by $this_program $this_version. +.TH $PROGRAM "$section" "$date" "$package $version" GNU +EOT + +# Section ordering. +my @pre = qw(NAME SYNOPSIS DESCRIPTION OPTIONS EXAMPLES); +my @post = ('AUTHOR', 'REPORTING BUGS', 'COPYRIGHT', 'SEE ALSO'); +my $filter = join '|', @pre, @post; + +# Output content. +for (@pre, (grep ! /^($filter)$/o, @include), @post) +{ + if ($include{$_}) + { + my $quote = /\W/ ? '"' : ''; + print ".SH $quote$_$quote\n"; + + for ($include{$_}) + { + # Replace leading dot, apostrophe and backslash tokens. + s/\x80/\\&./g; + s/\x81/\\&'/g; + s/\x82/\\e/g; + print; + } + } +} + +exit; + +# Convert option dashes to \- to stop nroff from hyphenating 'em, and +# embolden. Option arguments get italicised. +sub convert_option +{ + local $_ = '\fB' . shift; + + s/-/\\-/g; + unless (s/\[=(.*)\]$/\\fR[=\\fI$1\\fR]/) + { + s/=(.)/\\fR=\\fI$1/; + s/ (.)/ \\fI$1/; + $_ .= '\fR'; + } + + $_; +} diff --git a/man/msgcat.x b/man/msgcat.x new file mode 100644 index 0000000..0b515b7 --- /dev/null +++ b/man/msgcat.x @@ -0,0 +1,4 @@ +[NAME] +msgcat \- combines several message catalogs +[DESCRIPTION] +.\" Add any additional description here diff --git a/man/msgcmp.x b/man/msgcmp.x new file mode 100644 index 0000000..b831b1c --- /dev/null +++ b/man/msgcmp.x @@ -0,0 +1,4 @@ +[NAME] +msgcmp \- compare message catalog and template +[DESCRIPTION] +.\" Add any additional description here diff --git a/man/msgcomm.x b/man/msgcomm.x new file mode 100644 index 0000000..d6eb018 --- /dev/null +++ b/man/msgcomm.x @@ -0,0 +1,4 @@ +[NAME] +msgcomm \- match two message catalogs +[DESCRIPTION] +.\" Add any additional description here diff --git a/man/msgconv.x b/man/msgconv.x new file mode 100644 index 0000000..3cb6923 --- /dev/null +++ b/man/msgconv.x @@ -0,0 +1,4 @@ +[NAME] +msgconv \- character set conversion for message catalog +[DESCRIPTION] +.\" Add any additional description here diff --git a/man/msgen.x b/man/msgen.x new file mode 100644 index 0000000..7ed136d --- /dev/null +++ b/man/msgen.x @@ -0,0 +1,4 @@ +[NAME] +msgen \- create English message catalog +[DESCRIPTION] +.\" Add any additional description here diff --git a/man/msgfmt.x b/man/msgfmt.x new file mode 100644 index 0000000..ebe1827 --- /dev/null +++ b/man/msgfmt.x @@ -0,0 +1,4 @@ +[NAME] +msgfmt \- compile message catalog to binary format +[DESCRIPTION] +.\" Add any additional description here diff --git a/man/msggrep.x b/man/msggrep.x new file mode 100644 index 0000000..53f7757 --- /dev/null +++ b/man/msggrep.x @@ -0,0 +1,4 @@ +[NAME] +msggrep \- pattern matching on message catalog +[DESCRIPTION] +.\" Add any additional description here diff --git a/man/msgmerge.x b/man/msgmerge.x new file mode 100644 index 0000000..1558461 --- /dev/null +++ b/man/msgmerge.x @@ -0,0 +1,4 @@ +[NAME] +msgmerge \- merge message catalog and template +[DESCRIPTION] +.\" Add any additional description here diff --git a/man/msgsed.x b/man/msgsed.x new file mode 100644 index 0000000..7a7e4d3 --- /dev/null +++ b/man/msgsed.x @@ -0,0 +1,4 @@ +[NAME] +msgsed \- stream editing of message catalog +[DESCRIPTION] +.\" Add any additional description here diff --git a/man/msgunfmt.x b/man/msgunfmt.x new file mode 100644 index 0000000..479cae1 --- /dev/null +++ b/man/msgunfmt.x @@ -0,0 +1,4 @@ +[NAME] +msgunfmt \- uncompile message catalog from binary format +[DESCRIPTION] +.\" Add any additional description here diff --git a/man/ngettext.x b/man/ngettext.x new file mode 100644 index 0000000..10b0c76 --- /dev/null +++ b/man/ngettext.x @@ -0,0 +1,8 @@ +[NAME] +ngettext \- translate message and choose plural form +[DESCRIPTION] +.\" Add any additional description here +The \fBngettext\fP program translates a natural language message into the +user's language, by looking up the translation in a message catalog, and +chooses the appropriate plural form, which depends on the number \fICOUNT\fP +and the language of the message catalog where the translation was found. diff --git a/man/xgettext.x b/man/xgettext.x new file mode 100644 index 0000000..45d54a2 --- /dev/null +++ b/man/xgettext.x @@ -0,0 +1,4 @@ +[NAME] +xgettext \- extract gettext strings from source +[DESCRIPTION] +.\" Add any additional description here |