diff options
Diffstat (limited to 'locale/libintl.h')
-rw-r--r-- | locale/libintl.h | 80 |
1 files changed, 56 insertions, 24 deletions
diff --git a/locale/libintl.h b/locale/libintl.h index 802bd45492..f9a150d3df 100644 --- a/locale/libintl.h +++ b/locale/libintl.h @@ -1,6 +1,8 @@ -/* 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 @@ -14,64 +16,94 @@ Library General Public License for more details. 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 */ |