From 599fe666873f7c8a5f8b6cdd55f2c585aae39326 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Thu, 25 Sep 2003 12:01:28 +0000 Subject: [PATCH] New module 'version-etc-2'. --- ChangeLog | 6 ++ MODULES.html.sh | 1 + lib/ChangeLog | 5 ++ lib/version-etc-2.c | 176 ++++++++++++++++++++++++++++++++++++++++++ lib/version-etc-2.h | 37 +++++++++ modules/version-etc-2 | 22 ++++++ 6 files changed, 247 insertions(+) create mode 100644 lib/version-etc-2.c create mode 100644 lib/version-etc-2.h create mode 100644 modules/version-etc-2 diff --git a/ChangeLog b/ChangeLog index 16dd2ec69b..546a8545a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-09-25 Bruno Haible + + * modules/version-etc-2: New file, from modules/version-etc with + modifications. + * MODULES.html.sh (func_all_modules): Add version-etc-2. + 2003-09-25 Simon Josefsson Bruno Haible diff --git a/MODULES.html.sh b/MODULES.html.sh index 1d3f17dbba..b150391d04 100755 --- a/MODULES.html.sh +++ b/MODULES.html.sh @@ -1558,6 +1558,7 @@ func_all_modules () func_begin_table func_module argmatch func_module version-etc + func_module version-etc-2 func_module long-options func_end_table diff --git a/lib/ChangeLog b/lib/ChangeLog index 1bbc40ef4c..60bf66490a 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,8 @@ +2003-09-25 Bruno Haible + + * version-etc-2.h: New file, from version-etc.h with modifications. + * version-etc-2.c: New file, from version-etc.c with modifications. + 2003-09-25 Simon Josefsson * xgetdomainname.h: New file. diff --git a/lib/version-etc-2.c b/lib/version-etc-2.c new file mode 100644 index 0000000000..efa6ffeba8 --- /dev/null +++ b/lib/version-etc-2.c @@ -0,0 +1,176 @@ +/* Utility to help print --version output in a consistent format. + Copyright (C) 1999, 2000, 2001, 2002, 2003 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 Jim Meyering. */ + +#if HAVE_CONFIG_H +# include +#endif + +/* Specification. */ +#include "version-etc-2.h" + +#include +#include +#include +#include "unlocked-io.h" + +#include "gettext.h" +#define _(msgid) gettext (msgid) + +/* Default copyright goes to the FSF. */ + +const char* version_etc_copyright = + /* Do *not* mark this string for translation. */ + "Copyright (C) 2003 Free Software Foundation, Inc."; + + +/* Like version_etc, below, but with the NULL-terminated author list + provided via a variable of type va_list. */ +void +version_etc_va (FILE *stream, + const char *command_name, const char *package, + const char *version, va_list authors) +{ + unsigned int n_authors; + + /* Count the number of authors. */ + { + va_list tmp_authors; + +#ifdef __va_copy + __va_copy (tmp_authors, authors); +#else + tmp_authors = authors; +#endif + + n_authors = 0; + while (va_arg (tmp_authors, const char *) != NULL) + ++n_authors; + } + + if (command_name) + fprintf (stream, "%s (%s) %s\n", command_name, package, version); + else + fprintf (stream, "%s %s\n", package, version); + + switch (n_authors) + { + case 0: + /* The caller must provide at least one author name. */ + abort (); + case 1: + /* TRANSLATORS: %s denotes an author name. */ + vfprintf (stream, _("Written by %s.\n"), authors); + break; + case 2: + /* TRANSLATORS: Each %s denotes an author name. */ + vfprintf (stream, _("Written by %s and %s.\n"), authors); + break; + case 3: + /* TRANSLATORS: Each %s denotes an author name. */ + vfprintf (stream, _("Written by %s, %s, and %s.\n"), authors); + break; + case 4: + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("Written by %s, %s, %s,\nand %s.\n"), authors); + break; + case 5: + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("Written by %s, %s, %s,\n%s, and %s.\n"), authors); + break; + case 6: + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("Written by %s, %s, %s,\n%s, %s, and %s.\n"), + authors); + break; + case 7: + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("Written by %s, %s, %s,\n%s, %s, %s, and %s.\n"), + authors); + break; + case 8: + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("\ +Written by %s, %s, %s,\n%s, %s, %s, %s,\nand %s.\n"), + authors); + break; + case 9: + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("\ +Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, and %s.\n"), + authors); + break; + default: + /* 10 or more authors. Use an abbreviation, since the human reader + will probably not want to read the entire list anyway. */ + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("\ +Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, %s, and others.\n"), + authors); + break; + } + va_end (authors); + putc ('\n', stream); + + fputs (version_etc_copyright, stream); + putc ('\n', stream); + + fputs (_("\ +This is free software; see the source for copying conditions. There is NO\n\ +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), + stream); +} + + +/* Display the --version information the standard way. + + If COMMAND_NAME is NULL, the PACKAGE is asumed to be the name of + the program. The formats are therefore: + + PACKAGE VERSION + + or + + COMMAND_NAME (PACKAGE) VERSION. + + The author names are passed as separate arguments, with an additional + NULL argument at the end. */ +void +version_etc (FILE *stream, + const char *command_name, const char *package, + const char *version, /* const char *author1, ...*/ ...) +{ + va_list authors; + + va_start (authors, version); + version_etc_va (stream, command_name, package, version, authors); +} diff --git a/lib/version-etc-2.h b/lib/version-etc-2.h new file mode 100644 index 0000000000..d505e75eae --- /dev/null +++ b/lib/version-etc-2.h @@ -0,0 +1,37 @@ +/* Utility to help print --version output in a consistent format. + Copyright (C) 1999, 2003 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 Jim Meyering. */ + +#ifndef VERSION_ETC_H +# define VERSION_ETC_H 1 + +# include +# include + +extern const char *version_etc_copyright; + +extern void version_etc_va (FILE *stream, + const char *command_name, const char *package, + const char *version, va_list authors); + +extern void version_etc (FILE *stream, + const char *command_name, const char *package, + const char *version, + /* const char *author1, ...*/ ...); + +#endif /* VERSION_ETC_H */ diff --git a/modules/version-etc-2 b/modules/version-etc-2 new file mode 100644 index 0000000000..a5c2d56ccf --- /dev/null +++ b/modules/version-etc-2 @@ -0,0 +1,22 @@ +Description: +Print --version output. Translator-friendly. + +Files: +lib/version-etc-2.h +lib/version-etc-2.c + +Depends-on: +unlocked-io +gettext + +configure.ac: + +Makefile.am: +lib_SOURCES += version-etc-2.h version-etc-2.c + +Include: +"version-etc-2.h" + +Maintainer: +Jim Meyering, Bruno Haible + -- 2.30.2