-/* libintl.h -- Message catalogs for internationalization.
+/* libgettext.h -- Message catalogs for internationalization.
Copyright (C) 1995 Free Software Foundation, Inc.
This file is part of the GNU C Library.
+Contributed by Ulrich Drepper.
+This file is derived from the file libgettext.h in the GNU gettext package.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
+not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
#ifndef _LIBINTL_H
-#define _LIBINTL_H 1
+#define _LIBINTL_H 1
+#include <features.h>
#include <locale.h>
+#define __need_NULL
+#include <stddef.h>
+
+/* We define an additional symbol to signal that we use the GNU
+ implementation of gettext. */
+#define __USE_GNU_GETTEXT 1
+
+__BEGIN_DECLS
/* Look up MSGID in the current default message catalog for the current
LC_MESSAGES locale. If not found, returns MSGID itself (the default
text). */
extern char *gettext __P ((const char *__msgid));
+extern char *__gettext __P ((const char *__msgid));
/* Look up MSGID in the DOMAINNAME message catalog for the current
LC_MESSAGES locale. */
extern char *dgettext __P ((const char *__domainname, const char *__msgid));
+extern char *__dgettext __P ((const char *__domainname, const char *__msgid));
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
locale. */
-extern char *__dcgettext __P ((const char *__domainname, const char *__msgid,
- int __category));
extern char *dcgettext __P ((const char *__domainname, const char *__msgid,
int __category));
+extern char *__dcgettext __P ((const char *__domainname, const char *__msgid,
+ int __category));
/* Set the current default message catalog to DOMAINNAME.
If DOMAINNAME is null, return the current default.
If DOMAINNAME is "", reset to the default of "messages". */
extern char *textdomain __P ((const char *__domainname));
+extern char *__textdomain __P ((const char *__domainname));
/* Specify that the DOMAINNAME message catalog will be found
in DIRNAME rather than in the system locale data base. */
extern char *bindtextdomain __P ((const char *__domainname,
const char *__dirname));
+extern char *__bindtextdomain __P ((const char *__domainname,
+ const char *__dirname));
+
+/* Optimized version of the function above. */
+#if defined __OPTIMIZED
+/* These must be a macro. Inlined functions are useless because the
+ `__builtin_constant_p' predicate in dcgettext would always return
+ false. */
-#if 1 /* XXX stub for the moment */
-#define gettext(msgid) (msgid)
-#define textdomain(domain) (void)(domain)
-#else
-#define gettext(msgid) __gettext (msgid)
-#define __gettext(msgid) __dgettext (NULL, (msgid))
+# define gettext (msgid) dgettext (NULL, msgid)
-#define dgettext(domainname, msgid) __dgettext (domainname, msgid)
-#define __dgettext(domainname, msgid) \
- __dcgettext (NULL, (msgid), LC_MESSAGES)
+# define dgettext (domainname, msgid) \
+ dcgettext (domainname, msgid, LC_MESSAGES)
-#ifdef __GNUC__
-#define __dcgettext(domainname, msgid, category) \
+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define dcgettext(domainname, msgid, category) \
(__extension__ \
({ \
- static char *__translation__; \
- if (! __translation__) \
- __translation__ = (__dcgettext) ((domainname), (msgid), (category)); \
- __translation__; \
+ char *result; \
+ if (__builtin_constant_p (msgid)) \
+ { \
+ extern int _nl_msg_cat_cntr; \
+ static char *__translation__; \
+ static int __catalog_counter__; \
+ if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \
+ { \
+ __translation__ = \
+ __dcgettext ((domainname), (msgid), (category)); \
+ __catalog_counter__ = _nl_msg_cat_cntr; \
+ } \
+ result = __translation__; \
+ } \
+ else \
+ result = __dcgettext ((domainname), (msgid), (category)); \
+ result; \
}))
-#endif
-#endif
+# endif
+#endif /* Optimizing. */
+
+
+__END_DECLS
-#endif /* libintl.h */
+#endif /* libintl.h */
Richard Stallman, @w{David J. MacKenzie}, and @w{Roland McGrath}.
@item
+The merge sort function @code{qsort} was written by Michael J. Haertel.
+
+@item
+The quick sort function used as a fallback by @code{qsort} was written
+by Douglas C. Schmidt.
+
+@item
+The memory allocation functions @code{malloc}, @code{realloc} and
+@code{free} and related code were written by Michael J. Haertel.
+
+@comment tege's name has an umlaut.
+@tex
+\xdef\SETtege{Torbj\"orn Granlund}
+@end tex
+@ifinfo
+@set tege Torbjorn Granlund
+@end ifinfo
+@item
+Fast implementations of many of the string functions (@code{memcpy},
+@code{strlen}, etc.) were written by @value{tege}.
+
+@item
+The @file{tar.h} header file was written by David J. MacKenzie.
+
+@item
+The port to the MIPS DECStation running Ultrix 4
+(@code{mips-dec-ultrix4})
+was contributed by Brendan Kehoe and Ian Lance Taylor.
+
+@item
+The DES encryption function @code{crypt} and related functions were
+contributed by Michael Glad.
+
+@item
+The @code{ftw} function was contributed by Ian Lance Taylor.
+
+@item
+The startup code to support SunOS shared libraries was contributed by
+Tom Quinn.
+
+@item
+The @code{mktime} function was contributed by Noel Cragg.
+
+@item
+The port to the Sequent Symmetry running Dynix version 3
+(@code{i386-sequent-bsd}) was contributed by Jason Merrill.
+
+@item
+The timezone support code is derived from the public-domain timezone
+package by Arthur David Olson and his many contributors.
+
+@item
+The port to the DEC Alpha running OSF/1 (@code{alpha-dec-osf1}) was
+contributed by Brendan Kehoe, using some code written by Roland McGrath.
+
+@item
+The port to SGI machines running Irix 4 (@code{mips-sgi-irix4}) was
+contributed by Tom Quinn.
+
+@item
+The port of the Mach and Hurd code to the MIPS architecture
+(@code{mips-@var{anything}-gnu}) was contributed by Kazumoto Kojima.
+
+@item
+The floating-point printing function used by @code{printf} and friends
+and the floating-point reading function used by @code{scanf},
+@code{strtod} and friends were written by Ulrich Drepper. The
+multi-precision integer functions used in those functions are taken from
+GNU MP, which was contributed by @value{tege}.
+
+@item
+The internationalization support in the library (@file{locale.h},
+@file{langinfo.h}, etc.) was written by Ulrich Drepper and Roland
+McGrath. Ulrich Drepper adapted the support code for message catalogs
+(@file{libintl.h}, etc.) from the GNU @code{gettext} package, which he
+also wrote.
+
+@item
+The port to Linux i386/ELF (@code{i386-@var{anything}-linux}) was
+contributed by Ulrich Drepper, based in large part on work done in
+Hongjiu Lu's Linux version of the GNU C Library.
+
+@item
+Stephen R. van den Berg contributed a highly-optimized @code{strstr} function.
+
+@item
+Ulrich Drepper contributed the @code{hsearch} and @code{drand48}
+families of functions; reentrant @samp{@dots{}@code{_r}} versions of the
+@code{random} family; System V shared memory and IPC support code; and
+several highly-optimized string functions for i@var{x}86 processors.
+
+@item
Most of the math functions are taken from 4.4 BSD; they have been
modified only slightly to work with the GNU C library. The
Internet-related code (most of the @file{inet} subdirectory) and several
but the functional code is Berkeley's.@refill
@item
-The merge sort function @code{qsort} was written by Michael J. Haertel.
-
-@item
-The quick sort function used as a fallback by @code{qsort} was written
-by Douglas C. Schmidt.
-
-@item
-The memory allocation functions @code{malloc}, @code{realloc} and
-@code{free} and related code were written by Michael J. Haertel.
-
-@comment tege's name has an umlaut.
-@tex
-\xdef\SETtege{Torbj\"orn Granlund}
-@end tex
-@ifinfo
-@set tege Torbjorn Granlund
-@end ifinfo
-@item
-Fast implementations of many of the string functions (@code{memcpy},
-@code{strlen}, etc.) were written by @value{tege}.
-
-@item
-Some of the support code for Mach is taken from Mach 3.0 by CMU,
-and is under the following copyright terms:
-
-@quotation
-@display
-Mach Operating System
-Copyright @copyright{} 1991,1990,1989 Carnegie Mellon University
-All Rights Reserved.
-@end display
-
-Permission to use, copy, modify and distribute this software and its
-documentation is hereby granted, provided that both the copyright
-notice and this permission notice appear in all copies of the
-software, derivative works or modified versions, and any portions
-thereof, and that both notices appear in supporting documentation.
-
-@sc{carnegie mellon allows free use of this software in its ``as is''
-condition. carnegie mellon disclaims any liability of any kind for
-any damages whatsoever resulting from the use of this software.}
-
-Carnegie Mellon requests users of this software to return to
-
-@display
- Software Distribution Coordinator
- School of Computer Science
- Carnegie Mellon University
- Pittsburgh PA 15213-3890
-@end display
-
-@noindent
-or @samp{Software.Distribution@@CS.CMU.EDU} any improvements or
-extensions that they make and grant Carnegie Mellon the rights to
-redistribute these changes.
-@end quotation
-
-@item
-The @file{tar.h} header file was written by David J. MacKenzie.
-
-@item
-The port to the MIPS DECStation running Ultrix 4
-(@code{mips-dec-ultrix4})
-was contributed by Brendan Kehoe and Ian Lance Taylor.
-
-@item
-The DES encryption function @code{crypt} and related functions were
-contributed by Michael Glad.
-
-@item
-The @code{ftw} function was contributed by Ian Lance Taylor.
-
-@item
-The code to support SunOS shared libraries was contributed by Tom Quinn.
-
-@item
-The @code{mktime} function was contributed by Noel Cragg.
-
-@item
-The port to the Sequent Symmetry running Dynix version 3
-(@code{i386-sequent-bsd}) was contributed by Jason Merrill.
-
-@item
-The timezone support code is derived from the public-domain timezone
-package by Arthur David Olson.
-
-@item
-The Internet resolver code is taken directly from BIND 4.9.1, which is
+The Internet resolver code is taken directly from BIND 4.9.3, which is
under both the Berkeley copyright above and also:
@quotation
@end quotation
@item
-The port to the DEC Alpha running OSF/1 (@code{alpha-dec-osf1}) was
-contributed by Brendan Kehoe, using some code written by Roland McGrath.
-
-@item
-The floating-point printing function used by @code{printf} and friends
-was written by Roland McGrath and @value{tege}. The multi-precision
-integer functions used in that function are taken from GNU MP, which was
-contributed by @value{tege}.
-
-@item
The code to support Sun RPC is taken verbatim from Sun's
@w{@sc{rpcsrc-4.0}} distribution, and is covered by this copyright:
@end quotation
@item
-The port to SGI machines running Irix 4 (@code{mips-sgi-irix4}) was
-contributed by Tom Quinn.
+Some of the support code for Mach is taken from Mach 3.0 by CMU,
+and is under the following copyright terms:
+
+@quotation
+@display
+Mach Operating System
+Copyright @copyright{} 1991,1990,1989 Carnegie Mellon University
+All Rights Reserved.
+@end display
+
+Permission to use, copy, modify and distribute this software and its
+documentation is hereby granted, provided that both the copyright
+notice and this permission notice appear in all copies of the
+software, derivative works or modified versions, and any portions
+thereof, and that both notices appear in supporting documentation.
+
+@sc{carnegie mellon allows free use of this software in its ``as is''
+condition. carnegie mellon disclaims any liability of any kind for
+any damages whatsoever resulting from the use of this software.}
+
+Carnegie Mellon requests users of this software to return to
+
+@display
+ Software Distribution Coordinator
+ School of Computer Science
+ Carnegie Mellon University
+ Pittsburgh PA 15213-3890
+@end display
+
+@noindent
+or @samp{Software.Distribution@@CS.CMU.EDU} any improvements or
+extensions that they make and grant Carnegie Mellon the rights to
+redistribute these changes.
+@end quotation
-@item
-The port of the Mach and Hurd code to the MIPS architecture
-(@code{mips-@var{anything}-gnu}) was contributed by Kazumoto Kojima.
@end itemize
@c @bye