Bruno Haible dc96c48d1a Update bug reporting instructions.
* README: Tell users to report bugs in the bug tracker or by email. Use the
mailing list address, not the alias.
* gettext-runtime/libasprintf/README: Likewise.
* gettext-tools/doc/gettext.texi (Introduction): Likewise.
(Plural forms): Use the mailing list address, not the alias.
* configure.ac (AC_INIT): Use the mailing list address, not the alias.
* gettext-runtime/configure.ac (AC_INIT): Likewise.
* gettext-tools/configure.ac (AC_INIT): Likewise.
* gettext-tools/examples/configure.ac (AC_INIT): Likewise.
* gettext-runtime/po/Makevars (MSGID_BUGS_ADDRESS): Use the mailing list
address, not the alias.
* gettext-tools/po/Makevars (MSGID_BUGS_ADDRESS): Likewise.
* gettext-tools/examples/po/Makefile.am (MSGID_BUGS_ADDRESS): Likewise.
* gettext-tools/examples/hello-*/po/Makevars (MSGID_BUGS_ADDRESS): Likewise.
* gettext-tools/examples/hello-*/po/Makefile.am (MSGID_BUGS_ADDRESS): Likewise.
* gettext-tools/examples/hello-objc-gnustep/po/GNUmakefile (MSGID_BUGS_ADDRESS):
Likewise.
* gettext-tools/examples/hello-c++-kde/hello.cc (main): Likewise.
* gettext-runtime/src/envsubst.c (main): Move URL out of translatable string.
(usage): Tell users to report bugs in the bug tracker or by email. Use the
mailing list address, not the alias.
* gettext-runtime/src/gettext.c: Likewise.
* gettext-runtime/src/ngettext.c: Likewise.
* gettext-tools/src/cldr-plurals.c: Likewise.
* gettext-tools/src/hostname.c: Likewise.
* gettext-tools/src/msgattrib.c: Likewise.
* gettext-tools/src/msgcat.c: Likewise.
* gettext-tools/src/msgcmp.c: Likewise.
* gettext-tools/src/msgcomm.c: Likewise.
* gettext-tools/src/msgconv.c: Likewise.
* gettext-tools/src/msgen.c: Likewise.
* gettext-tools/src/msgexec.c: Likewise.
* gettext-tools/src/msgfilter.c: Likewise.
* gettext-tools/src/msgfmt.c: Likewise.
* gettext-tools/src/msggrep.c: Likewise.
* gettext-tools/src/msginit.c: Likewise.
* gettext-tools/src/msgmerge.c: Likewise.
* gettext-tools/src/msgunfmt.c: Likewise.
* gettext-tools/src/msguniq.c: Likewise.
* gettext-tools/src/recode-sr-latin.c: Likewise.
* gettext-tools/src/urlget.c: Likewise.
* gettext-tools/src/xgettext.c: Likewise.
* gettext-tools/tests/tstgettext.c: Likewise.
* gettext-tools/tests/tstngettext.c: Likewise.
* gettext-tools/misc/autopoint.in (func_usage): Tell users to report bugs in the
bug tracker or by email. Use the mailing list address, not the alias.
* gettext-tools/misc/convert-archive.in (func_usage): Likewise.
* gettext-tools/misc/gettextize.in (func_usage): Likewise.
2019-05-12 00:21:16 +02:00

103 lines
2.7 KiB
Plaintext

GNU libasprintf - automatic formatted output to strings
This package makes the C formatted output routines (fprintf et al.) usable
in C++ programs.
Sample use
----------
char *pathname = autosprintf ("%s/%s", directory, filename);
cerr << autosprintf ("syntax error in %s:%d: %s", filename, line, errstring);
Benefits
--------
The benefits of autosprintf over the usual "piecewise meal" idiom
cerr << "syntax error in " << filename << ":" << line << ": " << errstring;
are:
- Reuses of the standard POSIX printf facility. Easy migration from C to C++.
- English sentences are kept together.
- Internationalization requires format strings, because
1. Internationalization requires the ability for the translator to change
the order of parts of a sentence. The POSIX printf formatted output
functions (and thus also autosprintf) support this through the %m$ and
*m$ syntax.
2. Translators are used to translate one string per sentence, not
multiple strings per sentence, and not C++ code statements.
- Reduces the risk of programming errors due to forgotten state in the
output stream (e.g. 'cout << hex;' not followed by 'cout << dec;').
The benefits of autosprintf over C sprintf are:
- Autosprintf avoids buffer overruns and truncated results.
The C sprintf() function often leads to buffer overruns. On the other
hand, the C snprintf() function requires extra coding for an a priori
estimate of the result's size and truncates the result if the estimate
was too low.
- Autosprintf avoids memory leaks.
Temporarily allocated memory is cleaned up automatically.
Installation
------------
See INSTALL. Usually "./configure; make; make install" should work.
The installed files are:
- An include file "autosprintf.h" which defines the class 'autosprintf',
in the namespace 'gnu'.
- A library libasprintf containing this class.
Use
---
To use the class autosprintf, use
#include "autosprintf.h"
using gnu::autosprintf;
and link with the linker option
-lasprintf
Misc notes
----------
An instance of class 'autosprintf' contains the formatted output result;
this string is freed when the instance's destructor is run.
The class name 'autosprintf' is meant to remind the C function sprintf(),
the GNU C library function asprintf(), and the C++ autoptr programming idiom.
Distribution
------------
https://haible.de/bruno/gnu/libasprintf-1.0.tar.gz
Homepage
--------
https://haible.de/bruno/packages-libasprintf.html
Bug reports
-----------
Report bugs
- in the bug tracker at <https://savannah.gnu.org/projects/gettext>
- or by email to <bug-gettext@gnu.org>.
Bruno Haible <brunoe@clisp.org>