(bind_textdomain_codeset): New declaration.
[kopensolaris-gnu/glibc.git] / intl / libintl.h
index 1d35518..967a8ca 100644 (file)
@@ -1,11 +1,7 @@
 /* Message catalogs for internationalization.
 /* Message catalogs for internationalization.
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+   Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
    This file is derived from the file libgettext.h in the GNU gettext package.
 
    This file is derived from the file libgettext.h in the GNU gettext package.
 
-   This file is part of the GNU C Library.  Its master source is NOT part of
-   the C library, however.
-
    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
    published by the Free Software Foundation; either version 2 of the
    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
    published by the Free Software Foundation; either version 2 of the
@@ -35,32 +31,57 @@ __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).  */
 /* 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 (__const char *__msgid) __THROW;
 
 /* Look up MSGID in the DOMAINNAME message catalog for the current
    LC_MESSAGES locale.  */
 
 /* 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));
+extern char *dgettext (__const char *__domainname,
+                      __const char *__msgid) __THROW;
+extern char *__dgettext (__const char *__domainname,
+                        __const char *__msgid) __THROW;
 
 /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
    locale.  */
 
 /* 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 (__const char *__domainname,
+                       __const char *__msgid, int __category) __THROW;
+extern char *__dcgettext (__const char *__domainname,
+                         __const char *__msgid, int __category) __THROW;
+
+
+/* Similar to `gettext' but select the plural form corresponding to the
+   number N.  */
+extern char *ngettext (__const char *__msgid1, __const char *__msgid2,
+                      unsigned long int __n)
+     __THROW __attribute__ ((__format_arg__ (1)));
+
+/* Similar to `dgettext' but select the plural form corresponding to the
+   number N.  */
+extern char *dngettext (__const char *__domainname, __const char *__msgid1,
+                       __const char *__msgid2, unsigned long int __n)
+     __THROW __attribute__ ((__format_arg__ (2)));
+
+/* Similar to `dcgettext' but select the plural form corresponding to the
+   number N.  */
+extern char *dcngettext (__const char *__domainname, __const char *__msgid1,
+                        __const char *__msgid2, unsigned long int __n,
+                        int __category)
+     __THROW __attribute__ ((__format_arg__ (2)));
 
 
 /* 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".  */
 
 
 /* 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 (__const char *__domainname) __THROW;
 
 /* Specify that the DOMAINNAME message catalog will be found
    in DIRNAME rather than in the system locale data base.  */
 
 /* 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 (__const char *__domainname,
+                            __const char *__dirname) __THROW;
+
+/* Specify the character encoding in which the messages from the
+   DOMAINNAME message catalog will be returned.  */
+extern char *bind_textdomain_codeset (__const char *__domainname,
+                                     __const char *__codeset) __THROW;
 
 
 /* Optimized version of the function above.  */
 
 
 /* Optimized version of the function above.  */
@@ -82,34 +103,12 @@ extern char *bindtextdomain __P ((__const char *__domainname,
 # define dgettext(domainname, msgid)                                         \
   dcgettext (domainname, msgid, LC_MESSAGES)
 
 # define dgettext(domainname, msgid)                                         \
   dcgettext (domainname, msgid, LC_MESSAGES)
 
-# if __GNUC_PREREQ (2,7)
-/* Variable defined in loadmsgcat.c which gets incremented every time a
-   new catalog is loaded.  */
-extern int _nl_msg_cat_cntr;
-
-#  define dcgettext(domainname, msgid, category)                             \
-  (__extension__                                                             \
-   ({                                                                        \
-     char *__result;                                                         \
-     if (__builtin_constant_p (msgid))                                       \
-       {                                                                     \
-        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 /* Optimizing. */
+# define ngettext(msgid, n) dngettext (NULL, msgid, n)
+
+# define dngettext(domainname, msgid, n)                                     \
+  dcngettext (domainname, msgid, n, LC_MESSAGES)
 
 
+#endif /* Optimizing.  */
 
 __END_DECLS
 
 
 __END_DECLS