From c709e372e8940b3f374b690d7eb7521e69ab4228 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Wed, 27 Sep 1995 02:50:10 +0000 Subject: * locale/libintl.h: Rewritten by Ulrich Drepper for use with GNU gettext code. * sysdeps/unix/sysv/linux/sys/param.h: New file. * sysdeps/unix/sysv/linux/Subdirs: File removed. * libc-symbols.h (_LIBC): Define to 1, not just empty. --- locale/libintl.h | 80 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 56 insertions(+), 24 deletions(-) (limited to 'locale') 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 #include +#define __need_NULL +#include + +/* 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 */ -- cgit v1.2.3