Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-11-02 10:40:19

0001 /* Message catalogs for internationalization.
0002    Copyright (C) 1995-2026 Free Software Foundation, Inc.
0003 
0004    This program is free software: you can redistribute it and/or modify
0005    it under the terms of the GNU Lesser General Public License as published by
0006    the Free Software Foundation; either version 2.1 of the License, or
0007    (at your option) any later version.
0008 
0009    This program is distributed in the hope that it will be useful,
0010    but WITHOUT ANY WARRANTY; without even the implied warranty of
0011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0012    GNU Lesser General Public License for more details.
0013 
0014    You should have received a copy of the GNU Lesser General Public License
0015    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
0016 
0017 /* Written by Ulrich Drepper and Bruno Haible.  */
0018 
0019 #ifndef _LIBINTL_H
0020 #define _LIBINTL_H 1
0021 
0022 #include <locale.h>
0023 #if (defined __APPLE__ && defined __MACH__) && 1
0024 # include <xlocale.h>
0025 #endif
0026 
0027 /* The LC_MESSAGES locale category is the category used by the functions
0028    gettext() and dgettext().  It is specified in POSIX, but not in ANSI C.
0029    On systems that don't define it, use an arbitrary value instead.
0030    On Solaris, <locale.h> defines __LOCALE_H (or _LOCALE_H in Solaris 2.5)
0031    then includes <libintl.h> (i.e. this file!) and then only defines
0032    LC_MESSAGES.  To avoid a redefinition warning, don't define LC_MESSAGES
0033    in this case.  */
0034 #if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun))
0035 # define LC_MESSAGES 1729
0036 #endif
0037 
0038 /* We define an additional symbol to signal that we use the GNU
0039    implementation of gettext.  */
0040 #define __USE_GNU_GETTEXT 1
0041 
0042 /* Provide information about the supported file formats.  Returns the
0043    maximum minor revision number supported for a given major revision.  */
0044 #define __GNU_GETTEXT_SUPPORTED_REVISION(major) \
0045   ((major) == 0 || (major) == 1 ? 1 : -1)
0046 
0047 /* Resolve a platform specific conflict on DJGPP.  GNU gettext takes
0048    precedence over _conio_gettext.  */
0049 #ifdef __DJGPP__
0050 # undef gettext
0051 #endif
0052 
0053 #ifdef __cplusplus
0054 extern "C" {
0055 #endif
0056 
0057 
0058 /* Version number: (major<<16) + (minor<<8) + subminor */
0059 #define LIBINTL_VERSION 0x010000
0060 extern int libintl_version;
0061 
0062 
0063 /* We redirect the functions to those prefixed with "libintl_".  This is
0064    necessary, because some systems define gettext/textdomain/... in the C
0065    library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer).
0066    If we used the unprefixed names, there would be cases where the
0067    definition in the C library would override the one in the libintl.so
0068    shared library.  Recall that on ELF systems, the symbols are looked
0069    up in the following order:
0070      1. in the executable,
0071      2. in the shared libraries specified on the link command line, in order,
0072      3. in the dependencies of the shared libraries specified on the link
0073         command line,
0074      4. in the dlopen()ed shared libraries, in the order in which they were
0075         dlopen()ed.
0076    The definition in the C library would override the one in libintl.so if
0077    either
0078      * -lc is given on the link command line and -lintl isn't, or
0079      * -lc is given on the link command line before -lintl, or
0080      * libintl.so is a dependency of a dlopen()ed shared library but not
0081        linked to the executable at link time.
0082    Since Solaris gettext() behaves differently than GNU gettext(), this
0083    would be unacceptable.
0084 
0085    For the redirection, three mechanisms are available:
0086      * _INTL_REDIRECT_ASM uses a function declaration with 'asm', that
0087        specifies a different symbol at the linker level than at the C level.
0088      * _INTL_REDIRECT_INLINE uses an inline function definition.  In C,
0089        we use 'static inline' to force the override.  In C++, it is better
0090        to use 'inline' without 'static'.  But since the override is only
0091        effective if the inlining happens, we need to use
0092        __attribute__ ((__always_inline__)), which is supported in g++ >= 3.1
0093        and clang.  MSVC has a similar keyword __forceinline (see
0094        <https://learn.microsoft.com/en-us/cpp/cpp/inline-functions-cpp>),
0095        but it has an effect only when optimizing is enabled, and there is no
0096        preprocessor macro that tells us whether optimizing is enabled.
0097      * _INTL_REDIRECT_MACROS uses C macros.
0098    The drawbacks are:
0099      * _INTL_REDIRECT_ASM and _INTL_REDIRECT_INLINE don't work when the
0100        function has an inline function definition in a system header file;
0101        this mostly affects mingw and MSVC.  In these cases,
0102        _INTL_REDIRECT_MACROS is the only mechanism that works.
0103      * _INTL_REDIRECT_MACROS can interfere with symbols used in structs and
0104        classes (especially in C++, but also in C).  For example, Qt has a class
0105        with an 'asprintf' member, and our '#define asprintf libintl_asprintf'
0106        triggers a compilation error.
0107      * _INTL_REDIRECT_INLINE in C mode has the effect that each function's
0108        address, such as &gettext, is different in each compilation unit.
0109  */
0110 
0111 /* _INTL_FORCE_INLINE ensures inlining of a function, even when not
0112    optimizing.  */
0113 /* Applies to: functions.  */
0114 /* Supported by g++ >= 3.1 and clang.  Actually needed for g++ < 4.0.  */
0115 #if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 1) > 3) || defined __clang__
0116 # define _INTL_HAS_FORCE_INLINE
0117 # define _INTL_FORCE_INLINE __attribute__ ((__always_inline__))
0118 #else
0119 # define _INTL_FORCE_INLINE
0120 #endif
0121 
0122 /* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS.
0123    If he doesn't, we choose the method.  */
0124 #if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
0125 # if ((defined __GNUC__ && __GNUC__ >= 2) || defined __clang__) && !(defined __APPLE_CC__ && __APPLE_CC__ > 1) && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus)
0126 #  define _INTL_REDIRECT_ASM
0127 # else
0128 #  if defined __cplusplus && defined _INTL_HAS_FORCE_INLINE
0129 #   define _INTL_REDIRECT_INLINE
0130 #  else
0131 #   define _INTL_REDIRECT_MACROS
0132 #  endif
0133 # endif
0134 #endif
0135 /* Auxiliary macros.  */
0136 #ifdef _INTL_REDIRECT_ASM
0137 # define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname))
0138 # define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring
0139 # define _INTL_STRINGIFY(prefix) #prefix
0140 #else
0141 # define _INTL_ASM(cname)
0142 #endif
0143 
0144 /* _INTL_MAY_RETURN_STRING_ARG(n) declares that the given function may return
0145    its n-th argument literally.  This enables GCC to warn for example about
0146    printf (gettext ("foo %y")).  */
0147 #if ((defined __GNUC__ && __GNUC__ >= 3) || defined __clang__) && !(defined __APPLE_CC__ && __APPLE_CC__ > 1 && !(defined __clang__ && __clang__ && __clang_major__ >= 3) && defined __cplusplus)
0148 # define _INTL_MAY_RETURN_STRING_ARG(n) __attribute__ ((__format_arg__ (n)))
0149 #else
0150 # define _INTL_MAY_RETURN_STRING_ARG(n)
0151 #endif
0152 
0153 /* _INTL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK))
0154    declares that the STRING-INDEXth function argument is a format string of
0155    style ARCHETYPE, which is one of:
0156      printf, gnu_printf
0157      scanf, gnu_scanf,
0158      strftime, gnu_strftime,
0159      strfmon,
0160    or the same thing prefixed and suffixed with '__'.
0161    If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK
0162    are suitable for the format string.  */
0163 /* Applies to: functions.  */
0164 #if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 7) > 2) || defined __clang__
0165 # define _INTL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
0166 #else
0167 # define _INTL_ATTRIBUTE_FORMAT(spec)
0168 #endif
0169 
0170 /* _INTL_ATTRIBUTE_SPEC_PRINTF_STANDARD
0171    An __attribute__ __format__ specifier for a function that takes a format
0172    string and arguments, where the format string directives are the ones
0173    standardized by ISO C99 and POSIX.  */
0174 /* __gnu_printf__ is supported in GCC >= 4.4.  */
0175 #if defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 4) > 4
0176 # define _INTL_ATTRIBUTE_SPEC_PRINTF_STANDARD __gnu_printf__
0177 #else
0178 # define _INTL_ATTRIBUTE_SPEC_PRINTF_STANDARD __printf__
0179 #endif
0180 
0181 /* _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD
0182    indicates to GCC that the function takes a format string and arguments,
0183    where the format string directives are the ones standardized by ISO C99
0184    and POSIX.  */
0185 #define _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD(formatstring_parameter, first_argument) \
0186   _INTL_ATTRIBUTE_FORMAT ((_INTL_ATTRIBUTE_SPEC_PRINTF_STANDARD, formatstring_parameter, first_argument))
0187 
0188 /* _INTL_ARG_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,...
0189    must not be NULL.  */
0190 /* Applies to: functions.  */
0191 #if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 3) > 3) || defined __clang__
0192 # define _INTL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
0193 #else
0194 # define _INTL_ARG_NONNULL(params)
0195 #endif
0196 
0197 
0198 /* Look up MSGID in the current default message catalog for the current
0199    LC_MESSAGES locale.  If not found, returns MSGID itself (the default
0200    text).  */
0201 #ifdef _INTL_REDIRECT_INLINE
0202 extern char *libintl_gettext (const char *__msgid)
0203        _INTL_MAY_RETURN_STRING_ARG (1);
0204 # ifndef __cplusplus
0205 static
0206 # endif
0207 inline
0208 _INTL_FORCE_INLINE
0209 _INTL_MAY_RETURN_STRING_ARG (1)
0210 char *gettext (const char *__msgid)
0211 {
0212   return libintl_gettext (__msgid);
0213 }
0214 #else
0215 # ifdef _INTL_REDIRECT_MACROS
0216 #  define gettext libintl_gettext
0217 # endif
0218 extern char *gettext (const char *__msgid)
0219        _INTL_ASM (libintl_gettext)
0220        _INTL_MAY_RETURN_STRING_ARG (1);
0221 #endif
0222 
0223 /* Look up MSGID in the DOMAINNAME message catalog for the current
0224    LC_MESSAGES locale.  */
0225 #ifdef _INTL_REDIRECT_INLINE
0226 extern char *libintl_dgettext (const char *__domainname, const char *__msgid)
0227        _INTL_MAY_RETURN_STRING_ARG (2);
0228 # ifndef __cplusplus
0229 static
0230 # endif
0231 inline
0232 _INTL_FORCE_INLINE
0233 _INTL_MAY_RETURN_STRING_ARG (2)
0234 char *dgettext (const char *__domainname, const char *__msgid)
0235 {
0236   return libintl_dgettext (__domainname, __msgid);
0237 }
0238 #else
0239 # ifdef _INTL_REDIRECT_MACROS
0240 #  define dgettext libintl_dgettext
0241 # endif
0242 extern char *dgettext (const char *__domainname, const char *__msgid)
0243        _INTL_ASM (libintl_dgettext)
0244        _INTL_MAY_RETURN_STRING_ARG (2);
0245 #endif
0246 
0247 /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
0248    locale.  */
0249 #ifdef _INTL_REDIRECT_INLINE
0250 extern char *libintl_dcgettext (const char *__domainname, const char *__msgid,
0251                                 int __category)
0252        _INTL_MAY_RETURN_STRING_ARG (2);
0253 # ifndef __cplusplus
0254 static
0255 # endif
0256 inline
0257 _INTL_FORCE_INLINE
0258 _INTL_MAY_RETURN_STRING_ARG (2)
0259 char *dcgettext (const char *__domainname, const char *__msgid, int __category)
0260 {
0261   return libintl_dcgettext (__domainname, __msgid, __category);
0262 }
0263 #else
0264 # ifdef _INTL_REDIRECT_MACROS
0265 #  define dcgettext libintl_dcgettext
0266 # endif
0267 extern char *dcgettext (const char *__domainname, const char *__msgid,
0268                         int __category)
0269        _INTL_ASM (libintl_dcgettext)
0270        _INTL_MAY_RETURN_STRING_ARG (2);
0271 #endif
0272 
0273 
0274 /* Similar to 'gettext' but select the plural form corresponding to the
0275    number N.  */
0276 #ifdef _INTL_REDIRECT_INLINE
0277 extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
0278                                unsigned long int __n)
0279        _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
0280 # ifndef __cplusplus
0281 static
0282 # endif
0283 inline
0284 _INTL_FORCE_INLINE
0285 _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2)
0286 char *ngettext (const char *__msgid1, const char *__msgid2,
0287                 unsigned long int __n)
0288 {
0289   return libintl_ngettext (__msgid1, __msgid2, __n);
0290 }
0291 #else
0292 # ifdef _INTL_REDIRECT_MACROS
0293 #  define ngettext libintl_ngettext
0294 # endif
0295 extern char *ngettext (const char *__msgid1, const char *__msgid2,
0296                        unsigned long int __n)
0297        _INTL_ASM (libintl_ngettext)
0298        _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
0299 #endif
0300 
0301 /* Similar to 'dgettext' but select the plural form corresponding to the
0302    number N.  */
0303 #ifdef _INTL_REDIRECT_INLINE
0304 extern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
0305                                 const char *__msgid2, unsigned long int __n)
0306        _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
0307 # ifndef __cplusplus
0308 static
0309 # endif
0310 inline
0311 _INTL_FORCE_INLINE
0312 _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3)
0313 char *dngettext (const char *__domainname, const char *__msgid1,
0314                  const char *__msgid2, unsigned long int __n)
0315 {
0316   return libintl_dngettext (__domainname, __msgid1, __msgid2, __n);
0317 }
0318 #else
0319 # ifdef _INTL_REDIRECT_MACROS
0320 #  define dngettext libintl_dngettext
0321 # endif
0322 extern char *dngettext (const char *__domainname,
0323                         const char *__msgid1, const char *__msgid2,
0324                         unsigned long int __n)
0325        _INTL_ASM (libintl_dngettext)
0326        _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
0327 #endif
0328 
0329 /* Similar to 'dcgettext' but select the plural form corresponding to the
0330    number N.  */
0331 #ifdef _INTL_REDIRECT_INLINE
0332 extern char *libintl_dcngettext (const char *__domainname,
0333                                  const char *__msgid1, const char *__msgid2,
0334                                  unsigned long int __n, int __category)
0335        _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
0336 # ifndef __cplusplus
0337 static
0338 # endif
0339 inline
0340 _INTL_FORCE_INLINE
0341 _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3)
0342 char *dcngettext (const char *__domainname,
0343                   const char *__msgid1, const char *__msgid2,
0344                   unsigned long int __n, int __category)
0345 {
0346   return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category);
0347 }
0348 #else
0349 # ifdef _INTL_REDIRECT_MACROS
0350 #  define dcngettext libintl_dcngettext
0351 # endif
0352 extern char *dcngettext (const char *__domainname,
0353                          const char *__msgid1, const char *__msgid2,
0354                          unsigned long int __n, int __category)
0355        _INTL_ASM (libintl_dcngettext)
0356        _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
0357 #endif
0358 
0359 
0360 /* Set the current default message catalog to DOMAINNAME.
0361    If DOMAINNAME is null, return the current default.
0362    If DOMAINNAME is "", reset to the default of "messages".  */
0363 #ifdef _INTL_REDIRECT_INLINE
0364 extern char *libintl_textdomain (const char *__domainname);
0365 # ifndef __cplusplus
0366 static
0367 # endif
0368 inline
0369 _INTL_FORCE_INLINE
0370 char *textdomain (const char *__domainname)
0371 {
0372   return libintl_textdomain (__domainname);
0373 }
0374 #else
0375 # ifdef _INTL_REDIRECT_MACROS
0376 #  define textdomain libintl_textdomain
0377 # endif
0378 extern char *textdomain (const char *__domainname)
0379        _INTL_ASM (libintl_textdomain);
0380 #endif
0381 
0382 /* Specify that the DOMAINNAME message catalog will be found
0383    in DIRNAME rather than in the system locale data base.  */
0384 #ifdef _INTL_REDIRECT_INLINE
0385 extern char *libintl_bindtextdomain (const char *__domainname,
0386                                      const char *__dirname);
0387 # ifndef __cplusplus
0388 static
0389 # endif
0390 inline
0391 _INTL_FORCE_INLINE
0392 char *bindtextdomain (const char *__domainname, const char *__dirname)
0393 {
0394   return libintl_bindtextdomain (__domainname, __dirname);
0395 }
0396 #else
0397 # ifdef _INTL_REDIRECT_MACROS
0398 #  define bindtextdomain libintl_bindtextdomain
0399 # endif
0400 extern char *bindtextdomain (const char *__domainname, const char *__dirname)
0401        _INTL_ASM (libintl_bindtextdomain);
0402 #endif
0403 
0404 #if defined _WIN32 && !defined __CYGWIN__
0405 /* Specify that the DOMAINNAME message catalog will be found
0406    in WDIRNAME rather than in the system locale data base.  */
0407 # ifdef _INTL_REDIRECT_INLINE
0408 extern wchar_t *libintl_wbindtextdomain (const char *__domainname,
0409                                          const wchar_t *__wdirname);
0410 # ifndef __cplusplus
0411 static
0412 # endif
0413 inline
0414 _INTL_FORCE_INLINE
0415 wchar_t *wbindtextdomain (const char *__domainname, const wchar_t *__wdirname)
0416 {
0417   return libintl_wbindtextdomain (__domainname, __wdirname);
0418 }
0419 # else
0420 #  ifdef _INTL_REDIRECT_MACROS
0421 #   define wbindtextdomain libintl_wbindtextdomain
0422 #  endif
0423 extern wchar_t *wbindtextdomain (const char *__domainname,
0424                                  const wchar_t *__wdirname)
0425        _INTL_ASM (libintl_wbindtextdomain);
0426 # endif
0427 #endif
0428 
0429 /* Specify the character encoding in which the messages from the
0430    DOMAINNAME message catalog will be returned.  */
0431 #ifdef _INTL_REDIRECT_INLINE
0432 extern char *libintl_bind_textdomain_codeset (const char *__domainname,
0433                                               const char *__codeset);
0434 # ifndef __cplusplus
0435 static
0436 # endif
0437 inline
0438 _INTL_FORCE_INLINE
0439 char *bind_textdomain_codeset (const char *__domainname, const char *__codeset)
0440 {
0441   return libintl_bind_textdomain_codeset (__domainname, __codeset);
0442 }
0443 #else
0444 # ifdef _INTL_REDIRECT_MACROS
0445 #  define bind_textdomain_codeset libintl_bind_textdomain_codeset
0446 # endif
0447 extern char *bind_textdomain_codeset (const char *__domainname,
0448                                       const char *__codeset)
0449        _INTL_ASM (libintl_bind_textdomain_codeset);
0450 #endif
0451 
0452 
0453 /* Support for format strings with positions in *printf(), following the
0454    POSIX/XSI specification.
0455    Note: These replacements for the *printf() functions are visible only
0456    in source files that #include <libintl.h> or #include "gettext.h".
0457    Packages that use *printf() in source files that don't refer to _()
0458    or gettext() but for which the format string could be the return value
0459    of _() or gettext() need to add this #include.  Oh well.  */
0460 
0461 /* Note: In C++ mode, it is not sufficient to redefine a symbol at the
0462    preprocessor macro level, such as
0463      #define sprintf libintl_sprintf
0464    Some programs may reference std::sprintf after including <libintl.h>.
0465    Therefore we must make sure that std::libintl_sprintf is defined and
0466    identical to ::libintl_sprintf.
0467    The user can define _INTL_CXX_NO_CLOBBER_STD_NAMESPACE to avoid this.
0468    In such cases, they will not benefit from the overrides when using
0469    the 'std' namespace, and they will need to do the references to the
0470    'std' namespace *before* including <libintl.h> or "gettext.h".  */
0471 
0472 #if !1
0473 
0474 # include <stdio.h>
0475 # include <stddef.h>
0476 
0477 /* Get va_list.  */
0478 # if (defined __STDC__ && __STDC__) || defined __cplusplus || defined _MSC_VER
0479 #  include <stdarg.h>
0480 # else
0481 #  include <varargs.h>
0482 # endif
0483 
0484 # if !((defined fprintf && defined _GL_STDIO_H) || defined GNULIB_overrides_fprintf) /* don't override gnulib */
0485 #  if defined _INTL_REDIRECT_INLINE && !(defined __MINGW32__ || defined _MSC_VER)
0486 extern int libintl_vfprintf (FILE *, const char *, va_list)
0487        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0)
0488        _INTL_ARG_NONNULL ((1, 2));
0489 #   ifndef __cplusplus
0490 static
0491 #   endif
0492 inline
0493 _INTL_FORCE_INLINE
0494 _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) _INTL_ARG_NONNULL ((1, 2))
0495 int fprintf (FILE *__stream, const char *__format, ...)
0496 {
0497   va_list __args;
0498   int __ret;
0499   va_start (__args, __format);
0500   __ret = libintl_vfprintf (__stream, __format, __args);
0501   va_end (__args);
0502   return __ret;
0503 }
0504 #  elif !defined _INTL_NO_DEFINE_MACRO_FPRINTF
0505 #   if defined _INTL_REDIRECT_MACROS || defined __MINGW32__ || defined _MSC_VER
0506 #    undef fprintf
0507 #    define fprintf libintl_fprintf
0508 #   endif
0509 extern int fprintf (FILE *, const char *, ...)
0510        _INTL_ASM (libintl_fprintf)
0511        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3)
0512        _INTL_ARG_NONNULL ((1, 2));
0513 #   if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__ || defined _MSC_VER) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0514 namespace std { using ::libintl_fprintf; }
0515 #   endif
0516 #  endif
0517 # endif
0518 # if !((defined vfprintf && defined _GL_STDIO_H) || defined GNULIB_overrides_vfprintf) /* don't override gnulib */
0519 #  if defined _INTL_REDIRECT_INLINE && !(defined __MINGW32__ || defined _MSC_VER)
0520 extern int libintl_vfprintf (FILE *, const char *, va_list)
0521        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0)
0522        _INTL_ARG_NONNULL ((1, 2));
0523 #   ifndef __cplusplus
0524 static
0525 #   endif
0526 inline
0527 _INTL_FORCE_INLINE
0528 _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) _INTL_ARG_NONNULL ((1, 2))
0529 int vfprintf (FILE *__stream, const char *__format, va_list __args)
0530 {
0531   return libintl_vfprintf (__stream, __format, __args);
0532 }
0533 #  elif !defined _INTL_NO_DEFINE_MACRO_VFPRINTF
0534 #   if defined _INTL_REDIRECT_MACROS || defined __MINGW32__ || defined _MSC_VER
0535 #    undef vfprintf
0536 #    define vfprintf libintl_vfprintf
0537 #   endif
0538 extern int vfprintf (FILE *, const char *, va_list)
0539        _INTL_ASM (libintl_vfprintf)
0540        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0)
0541        _INTL_ARG_NONNULL ((1, 2));
0542 #   if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__ || defined _MSC_VER) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0543 namespace std { using ::libintl_vfprintf; }
0544 #   endif
0545 #  endif
0546 # endif
0547 
0548 # if !((defined printf && defined _GL_STDIO_H) || defined GNULIB_overrides_printf) /* don't override gnulib */
0549 #  if defined _INTL_REDIRECT_INLINE && !(defined __MINGW32__ || defined _MSC_VER)
0550 extern int libintl_vprintf (const char *, va_list)
0551        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (1, 0)
0552        _INTL_ARG_NONNULL ((1));
0553 #   ifndef __cplusplus
0554 static
0555 #   endif
0556 inline
0557 _INTL_FORCE_INLINE
0558 _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (1, 2) _INTL_ARG_NONNULL ((1))
0559 int printf (const char *__format, ...)
0560 {
0561   va_list __args;
0562   int __ret;
0563   va_start (__args, __format);
0564   __ret = libintl_vprintf (__format, __args);
0565   va_end (__args);
0566   return __ret;
0567 }
0568 #  elif !defined _INTL_NO_DEFINE_MACRO_PRINTF
0569 #   if defined _INTL_REDIRECT_MACROS || defined __MINGW32__ || defined _MSC_VER
0570 #    undef printf
0571 #    if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__
0572 /* Don't break __attribute__((format(printf,M,N))).
0573    This redefinition is only possible because the libc in NetBSD, Cygwin,
0574    mingw does not have a function __printf__.
0575    Alternatively, we could have done this redirection only when compiling with
0576    __GNUC__, together with a symbol redirection:
0577        extern int printf (const char *, ...)
0578               __asm__ (#__USER_LABEL_PREFIX__ "libintl_printf");
0579    But doing it now would introduce a binary incompatibility with already
0580    distributed versions of libintl on these systems.  */
0581 #     define libintl_printf __printf__
0582 #    endif
0583 #    define printf libintl_printf
0584 #   endif
0585 extern int printf (const char *, ...)
0586        _INTL_ASM (libintl_printf)
0587        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (1, 2)
0588        _INTL_ARG_NONNULL ((1));
0589 #   if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__ || defined _MSC_VER) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0590 namespace std { using ::libintl_printf; }
0591 #   endif
0592 #  endif
0593 # endif
0594 # if !((defined vprintf && defined _GL_STDIO_H) || defined GNULIB_overrides_vprintf) /* don't override gnulib */
0595 #  if defined _INTL_REDIRECT_INLINE && !(defined __MINGW32__ || defined _MSC_VER)
0596 extern int libintl_vprintf (const char *, va_list)
0597        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (1, 0)
0598        _INTL_ARG_NONNULL ((1));
0599 #   ifndef __cplusplus
0600 static
0601 #   endif
0602 inline
0603 _INTL_FORCE_INLINE
0604 _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (1, 0) _INTL_ARG_NONNULL ((1))
0605 int vprintf (const char *__format, va_list __args)
0606 {
0607   return libintl_vprintf (__format, __args);
0608 }
0609 #  elif !defined _INTL_NO_DEFINE_MACRO_VPRINTF
0610 #   if defined _INTL_REDIRECT_MACROS || defined __MINGW32__ || defined _MSC_VER
0611 #    undef vprintf
0612 #    define vprintf libintl_vprintf
0613 #   endif
0614 extern int vprintf (const char *, va_list)
0615        _INTL_ASM (libintl_vprintf)
0616        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (1, 0)
0617        _INTL_ARG_NONNULL ((1));
0618 #   if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__ || defined _MSC_VER) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0619 namespace std { using ::libintl_vprintf; }
0620 #   endif
0621 #  endif
0622 # endif
0623 
0624 # if !((defined sprintf && defined _GL_STDIO_H) || defined GNULIB_overrides_sprintf) /* don't override gnulib */
0625 #  if defined _INTL_REDIRECT_INLINE && !(defined __MINGW32__ || defined _MSC_VER)
0626 extern int libintl_vsprintf (char *, const char *, va_list)
0627        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0)
0628        _INTL_ARG_NONNULL ((1, 2));
0629 #   ifndef __cplusplus
0630 static
0631 #   endif
0632 inline
0633 _INTL_FORCE_INLINE
0634 _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) _INTL_ARG_NONNULL ((1, 2))
0635 int sprintf (char *__result, const char *__format, ...)
0636 {
0637   va_list __args;
0638   int __ret;
0639   va_start (__args, __format);
0640   __ret = libintl_vsprintf (__result, __format, __args);
0641   va_end (__args);
0642   return __ret;
0643 }
0644 #  elif !defined _INTL_NO_DEFINE_MACRO_SPRINTF
0645 #   if defined _INTL_REDIRECT_MACROS || defined __MINGW32__ || defined _MSC_VER
0646 #    undef sprintf
0647 #    define sprintf libintl_sprintf
0648 #   endif
0649 extern int sprintf (char *, const char *, ...)
0650        _INTL_ASM (libintl_sprintf)
0651        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3)
0652        _INTL_ARG_NONNULL ((1, 2));
0653 #   if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__ || defined _MSC_VER) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0654 namespace std { using ::libintl_sprintf; }
0655 #   endif
0656 #  endif
0657 # endif
0658 # if !((defined vsprintf && defined _GL_STDIO_H) || defined GNULIB_overrides_vsprintf) /* don't override gnulib */
0659 #  if defined _INTL_REDIRECT_INLINE && !(defined __MINGW32__ || defined _MSC_VER)
0660 extern int libintl_vsprintf (char *, const char *, va_list)
0661        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0)
0662        _INTL_ARG_NONNULL ((1, 2));
0663 #   ifndef __cplusplus
0664 static
0665 #   endif
0666 inline
0667 _INTL_FORCE_INLINE
0668 _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) _INTL_ARG_NONNULL ((1, 2))
0669 int vsprintf (char *__result, const char *__format, va_list __args)
0670 {
0671   return libintl_vsprintf (__result, __format, __args);
0672 }
0673 #  elif !defined _INTL_NO_DEFINE_MACRO_VSPRINTF
0674 #   if defined _INTL_REDIRECT_MACROS || defined __MINGW32__ || defined _MSC_VER
0675 #    undef vsprintf
0676 #    define vsprintf libintl_vsprintf
0677 #   endif
0678 extern int vsprintf (char *, const char *, va_list)
0679        _INTL_ASM (libintl_vsprintf)
0680        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0)
0681        _INTL_ARG_NONNULL ((1, 2));
0682 #   if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__ || defined _MSC_VER) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0683 namespace std { using ::libintl_vsprintf; }
0684 #   endif
0685 #  endif
0686 # endif
0687 
0688 # if 1
0689 
0690 #  if !((defined snprintf && defined _GL_STDIO_H) || defined GNULIB_overrides_snprintf) /* don't override gnulib */
0691 #   if defined _INTL_REDIRECT_INLINE && !defined __MINGW32__
0692 extern int libintl_vsnprintf (char *, size_t, const char *, va_list)
0693        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 0)
0694        _INTL_ARG_NONNULL ((3));
0695 #    ifndef __cplusplus
0696 static
0697 #    endif
0698 inline
0699 _INTL_FORCE_INLINE
0700 _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 4) _INTL_ARG_NONNULL ((3))
0701 int snprintf (char *__result, size_t __maxlen, const char *__format, ...)
0702 {
0703   va_list __args;
0704   int __ret;
0705   va_start (__args, __format);
0706   __ret = libintl_vsnprintf (__result, __maxlen, __format, __args);
0707   va_end (__args);
0708   return __ret;
0709 }
0710 #   elif !defined _INTL_NO_DEFINE_MACRO_SNPRINTF
0711 #    if defined _INTL_REDIRECT_MACROS || defined __MINGW32__
0712 #     undef snprintf
0713 #     define snprintf libintl_snprintf
0714 #    endif
0715 extern int snprintf (char *, size_t, const char *, ...)
0716        _INTL_ASM (libintl_snprintf)
0717        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 4)
0718        _INTL_ARG_NONNULL ((3));
0719 #    if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0720 namespace std { using ::libintl_snprintf; }
0721 #    endif
0722 #   endif
0723 #  endif
0724 #  if !((defined vsnprintf && defined _GL_STDIO_H) || defined GNULIB_overrides_vsnprintf) /* don't override gnulib */
0725 #   if defined _INTL_REDIRECT_INLINE && !defined __MINGW32__
0726 extern int libintl_vsnprintf (char *, size_t, const char *, va_list)
0727        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 0)
0728        _INTL_ARG_NONNULL ((3));
0729 #    ifndef __cplusplus
0730 static
0731 #    endif
0732 inline
0733 _INTL_FORCE_INLINE
0734 _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 0) _INTL_ARG_NONNULL ((3))
0735 int vsnprintf (char *__result, size_t __maxlen, const char *__format, va_list __args)
0736 {
0737   return libintl_vsnprintf (__result, __maxlen, __format, __args);
0738 }
0739 #   elif !defined _INTL_NO_DEFINE_MACRO_VSNPRINTF
0740 #    if defined _INTL_REDIRECT_MACROS || defined __MINGW32__
0741 #     undef vsnprintf
0742 #     define vsnprintf libintl_vsnprintf
0743 #    endif
0744 extern int vsnprintf (char *, size_t, const char *, va_list)
0745        _INTL_ASM (libintl_vsnprintf)
0746        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 0)
0747        _INTL_ARG_NONNULL ((3));
0748 #    if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0749 namespace std { using ::libintl_vsnprintf; }
0750 #    endif
0751 #   endif
0752 #  endif
0753 
0754 # endif
0755 
0756 # if 1
0757 
0758 #  if !((defined asprintf && defined _GL_STDIO_H) || defined GNULIB_overrides_asprintf) /* don't override gnulib */
0759 #   if defined _INTL_REDIRECT_INLINE && !defined __MINGW32__
0760 extern int libintl_vasprintf (char **, const char *, va_list)
0761        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0)
0762        _INTL_ARG_NONNULL ((1, 2));
0763 #    ifndef __cplusplus
0764 static
0765 #    endif
0766 inline
0767 _INTL_FORCE_INLINE
0768 _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) _INTL_ARG_NONNULL ((1, 2))
0769 int asprintf (char **__result, const char *__format, ...)
0770 {
0771   va_list __args;
0772   int __ret;
0773   va_start (__args, __format);
0774   __ret = libintl_vasprintf (__result, __format, __args);
0775   va_end (__args);
0776   return __ret;
0777 }
0778 #   elif !defined _INTL_NO_DEFINE_MACRO_ASPRINTF
0779 #    if defined _INTL_REDIRECT_MACROS || defined __MINGW32__
0780 #     undef asprintf
0781 #     define asprintf libintl_asprintf
0782 #    endif
0783 extern int asprintf (char **, const char *, ...)
0784        _INTL_ASM (libintl_asprintf)
0785        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3)
0786        _INTL_ARG_NONNULL ((1, 2));
0787 #    if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0788 namespace std { using ::libintl_asprintf; }
0789 #    endif
0790 #   endif
0791 #  endif
0792 #  if !((defined vasprintf && defined _GL_STDIO_H) || defined GNULIB_overrides_vasprintf) /* don't override gnulib */
0793 #   if defined _INTL_REDIRECT_INLINE && !defined __MINGW32__
0794 extern int libintl_vasprintf (char **, const char *, va_list)
0795        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0)
0796        _INTL_ARG_NONNULL ((1, 2));
0797 #    ifndef __cplusplus
0798 static
0799 #    endif
0800 inline
0801 _INTL_FORCE_INLINE
0802 _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) _INTL_ARG_NONNULL ((1, 2))
0803 int vasprintf (char **__result, const char *__format, va_list __args)
0804 {
0805   return libintl_vasprintf (__result, __format, __args);
0806 }
0807 #   elif !defined _INTL_NO_DEFINE_MACRO_VASPRINTF
0808 #    if defined _INTL_REDIRECT_MACROS || defined __MINGW32__
0809 #     undef vasprintf
0810 #     define vasprintf libintl_vasprintf
0811 #    endif
0812 extern int vasprintf (char **, const char *, va_list)
0813        _INTL_ASM (libintl_vasprintf)
0814        _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0)
0815        _INTL_ARG_NONNULL ((1, 2));
0816 #    if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0817 namespace std { using ::libintl_vasprintf; }
0818 #    endif
0819 #   endif
0820 #  endif
0821 
0822 # endif
0823 
0824 # if 1
0825 
0826 #  if defined _INTL_REDIRECT_INLINE && !defined __MINGW32__
0827 extern int libintl_vfwprintf (FILE *, const wchar_t *, va_list)
0828        _INTL_ARG_NONNULL ((1, 2));
0829 #   ifndef __cplusplus
0830 static
0831 #   endif
0832 inline
0833 _INTL_FORCE_INLINE
0834 _INTL_ARG_NONNULL ((1, 2))
0835 int fwprintf (FILE *__stream, const wchar_t *__format, ...)
0836 {
0837   va_list __args;
0838   int __ret;
0839   va_start (__args, __format);
0840   __ret = libintl_vfwprintf (__stream, __format, __args);
0841   va_end (__args);
0842   return __ret;
0843 }
0844 #  elif !defined _INTL_NO_DEFINE_MACRO_FWPRINTF
0845 #   if defined _INTL_REDIRECT_MACROS || defined __MINGW32__
0846 #    undef fwprintf
0847 #    define fwprintf libintl_fwprintf
0848 #   endif
0849 extern int fwprintf (FILE *, const wchar_t *, ...)
0850        _INTL_ASM (libintl_fwprintf)
0851        _INTL_ARG_NONNULL ((1, 2));
0852 #   if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0853 namespace std { using ::libintl_fwprintf; }
0854 #   endif
0855 #  endif
0856 #  if defined _INTL_REDIRECT_INLINE && !defined __MINGW32__
0857 extern int libintl_vfwprintf (FILE *, const wchar_t *, va_list)
0858        _INTL_ARG_NONNULL ((1, 2));
0859 #   ifndef __cplusplus
0860 static
0861 #   endif
0862 inline
0863 _INTL_FORCE_INLINE
0864 _INTL_ARG_NONNULL ((1, 2))
0865 int vfwprintf (FILE *__stream, const wchar_t *__format, va_list __args)
0866 {
0867   return libintl_vfwprintf (__stream, __format, __args);
0868 }
0869 #  elif !defined _INTL_NO_DEFINE_MACRO_VFWPRINTF
0870 #   if defined _INTL_REDIRECT_MACROS || defined __MINGW32__
0871 #    undef vfwprintf
0872 #    define vfwprintf libintl_vfwprintf
0873 #   endif
0874 extern int vfwprintf (FILE *, const wchar_t *, va_list)
0875        _INTL_ASM (libintl_vfwprintf)
0876        _INTL_ARG_NONNULL ((1, 2));
0877 #   if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0878 namespace std { using ::libintl_vfwprintf; }
0879 #   endif
0880 #  endif
0881 
0882 #  if defined _INTL_REDIRECT_INLINE && !defined __MINGW32__
0883 extern int libintl_vwprintf (const wchar_t *, va_list)
0884        _INTL_ARG_NONNULL ((1));
0885 #   ifndef __cplusplus
0886 static
0887 #   endif
0888 inline
0889 _INTL_FORCE_INLINE
0890 _INTL_ARG_NONNULL ((1))
0891 int wprintf (const wchar_t *__format, ...)
0892 {
0893   va_list __args;
0894   int __ret;
0895   va_start (__args, __format);
0896   __ret = libintl_vwprintf (__format, __args);
0897   va_end (__args);
0898   return __ret;
0899 }
0900 #  elif !defined _INTL_NO_DEFINE_MACRO_WPRINTF
0901 #   if defined _INTL_REDIRECT_MACROS || defined __MINGW32__
0902 #    undef wprintf
0903 #    define wprintf libintl_wprintf
0904 #   endif
0905 extern int wprintf (const wchar_t *, ...)
0906        _INTL_ASM (libintl_wprintf)
0907        _INTL_ARG_NONNULL ((1));
0908 #   if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0909 namespace std { using ::libintl_wprintf; }
0910 #   endif
0911 #  endif
0912 #  if defined _INTL_REDIRECT_INLINE && !defined __MINGW32__
0913 extern int libintl_vwprintf (const wchar_t *, va_list)
0914        _INTL_ARG_NONNULL ((1));
0915 #   ifndef __cplusplus
0916 static
0917 #   endif
0918 inline
0919 _INTL_FORCE_INLINE
0920 _INTL_ARG_NONNULL ((1))
0921 int vwprintf (const wchar_t *__format, va_list __args)
0922 {
0923   return libintl_vwprintf (__format, __args);
0924 }
0925 #  elif !defined _INTL_NO_DEFINE_MACRO_VWPRINTF
0926 #   if defined _INTL_REDIRECT_MACROS || defined __MINGW32__
0927 #    undef vwprintf
0928 #    define vwprintf libintl_vwprintf
0929 #   endif
0930 extern int vwprintf (const wchar_t *, va_list)
0931        _INTL_ASM (libintl_vwprintf)
0932        _INTL_ARG_NONNULL ((1));
0933 #   if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0934 namespace std { using ::libintl_vwprintf; }
0935 #   endif
0936 #  endif
0937 
0938 #  if defined _INTL_REDIRECT_INLINE && !defined __MINGW32__
0939 extern int libintl_vswprintf (wchar_t *, size_t, const wchar_t *, va_list)
0940        _INTL_ARG_NONNULL ((1, 3));
0941 #   ifndef __cplusplus
0942 static
0943 #   endif
0944 inline
0945 _INTL_FORCE_INLINE
0946 _INTL_ARG_NONNULL ((1, 3))
0947 int swprintf (wchar_t *__result, size_t __maxlen, const wchar_t * __format, ...)
0948 {
0949   va_list __args;
0950   int __ret;
0951   va_start (__args, __format);
0952   __ret = libintl_vswprintf (__result, __maxlen, __format, __args);
0953   va_end (__args);
0954   return __ret;
0955 }
0956 #  elif !defined _INTL_NO_DEFINE_MACRO_SWPRINTF
0957 #   if defined _INTL_REDIRECT_MACROS || defined __MINGW32__
0958 #    undef swprintf
0959 #    define swprintf libintl_swprintf
0960 #   endif
0961 extern int swprintf (wchar_t *, size_t, const wchar_t *, ...)
0962        _INTL_ASM (libintl_swprintf)
0963        _INTL_ARG_NONNULL ((1, 3));
0964 #   if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0965 namespace std { using ::libintl_swprintf; }
0966 #   endif
0967 #  endif
0968 #  if defined _INTL_REDIRECT_INLINE && !defined __MINGW32__
0969 extern int libintl_vswprintf (wchar_t *, size_t, const wchar_t *, va_list)
0970        _INTL_ARG_NONNULL ((1, 3));
0971 #   ifndef __cplusplus
0972 static
0973 #   endif
0974 inline
0975 _INTL_FORCE_INLINE
0976 _INTL_ARG_NONNULL ((1, 3))
0977 int vswprintf (wchar_t *__result, size_t __maxlen, const wchar_t *__format, va_list __args)
0978 {
0979   return libintl_vswprintf (__result, __maxlen, __format, __args);
0980 }
0981 #  elif !defined _INTL_NO_DEFINE_MACRO_VSWPRINTF
0982 #   if defined _INTL_REDIRECT_MACROS || defined __MINGW32__
0983 #    undef vswprintf
0984 #    define vswprintf libintl_vswprintf
0985 #   endif
0986 extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list)
0987        _INTL_ASM (libintl_vswprintf)
0988        _INTL_ARG_NONNULL ((1, 3));
0989 #   if (defined _INTL_REDIRECT_MACROS || defined __MINGW32__) && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
0990 namespace std { using ::libintl_vswprintf; }
0991 #   endif
0992 #  endif
0993 
0994 # endif
0995 
0996 #endif
0997 
0998 
0999 /* Support for retrieving the name of a locale_t object.  */
1000 #if 0
1001 
1002 # ifndef GNULIB_defined_newlocale /* don't override gnulib */
1003 #  ifdef _INTL_REDIRECT_INLINE
1004 extern locale_t libintl_newlocale (int, const char *, locale_t);
1005 #   ifndef __cplusplus
1006 static
1007 #   endif
1008 inline
1009 _INTL_FORCE_INLINE
1010 locale_t newlocale (int __category_mask, const char *__name, locale_t __base)
1011 {
1012   return libintl_newlocale (__category_mask, __name, __base);
1013 }
1014 #  elif !defined _INTL_NO_DEFINE_MACRO_NEWLOCALE
1015 #   ifdef _INTL_REDIRECT_MACROS
1016 #    undef newlocale
1017 #    define newlocale libintl_newlocale
1018 #   endif
1019 extern locale_t newlocale (int, const char *, locale_t)
1020        _INTL_ASM (libintl_newlocale);
1021 #   if defined _INTL_REDIRECT_MACROS && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
1022 namespace std { using ::libintl_newlocale; }
1023 #   endif
1024 #  endif
1025 # endif
1026 
1027 # ifndef GNULIB_defined_duplocale /* don't override gnulib */
1028 #  ifdef _INTL_REDIRECT_INLINE
1029 extern locale_t libintl_duplocale (locale_t);
1030 #   ifndef __cplusplus
1031 static
1032 #   endif
1033 inline
1034 _INTL_FORCE_INLINE
1035 locale_t duplocale (locale_t __locale)
1036 {
1037   return libintl_duplocale (__locale);
1038 }
1039 #  elif !defined _INTL_NO_DEFINE_MACRO_DUPLOCALE
1040 #   ifdef _INTL_REDIRECT_MACROS
1041 #    undef duplocale
1042 #    define duplocale libintl_duplocale
1043 #   endif
1044 extern locale_t duplocale (locale_t)
1045        _INTL_ASM (libintl_duplocale);
1046 #   if defined _INTL_REDIRECT_MACROS && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
1047 namespace std { using ::libintl_duplocale; }
1048 #   endif
1049 #  endif
1050 # endif
1051 
1052 # ifndef GNULIB_defined_freelocale /* don't override gnulib */
1053 #  ifdef _INTL_REDIRECT_INLINE
1054 extern void libintl_freelocale (locale_t);
1055 #   ifndef __cplusplus
1056 static
1057 #   endif
1058 inline
1059 _INTL_FORCE_INLINE
1060 void freelocale (locale_t __locale)
1061 {
1062   libintl_freelocale (__locale);
1063 }
1064 #  elif !defined _INTL_NO_DEFINE_MACRO_FREELOCALE
1065 #   ifdef _INTL_REDIRECT_MACROS
1066 #    undef freelocale
1067 #    define freelocale libintl_freelocale
1068 #   endif
1069 extern void freelocale (locale_t)
1070        _INTL_ASM (libintl_freelocale);
1071 #   if defined _INTL_REDIRECT_MACROS && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
1072 namespace std { using ::libintl_freelocale; }
1073 #   endif
1074 #  endif
1075 # endif
1076 
1077 #endif
1078 
1079 
1080 /* Support for the locale chosen by the user.  */
1081 #if (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __CYGWIN__
1082 
1083 # ifndef GNULIB_defined_setlocale /* don't override gnulib */
1084 #  ifdef _INTL_REDIRECT_INLINE
1085 extern char *libintl_setlocale (int, const char *);
1086 #   ifndef __cplusplus
1087 static
1088 #   endif
1089 inline
1090 _INTL_FORCE_INLINE
1091 char *setlocale (int __category, const char *__locale)
1092 {
1093   return libintl_setlocale (__category, __locale);
1094 }
1095 #  elif !defined _INTL_NO_DEFINE_MACRO_SETLOCALE
1096 #   ifdef _INTL_REDIRECT_MACROS
1097 #    undef setlocale
1098 #    define setlocale libintl_setlocale
1099 #   endif
1100 extern char *setlocale (int, const char *)
1101        _INTL_ASM (libintl_setlocale);
1102 #   if defined _INTL_REDIRECT_MACROS && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
1103 namespace std { using ::libintl_setlocale; }
1104 #   endif
1105 #  endif
1106 # endif
1107 
1108 # if 1
1109 
1110 /* Declare newlocale() only if the system headers define the 'locale_t' type. */
1111 #  if !(defined __CYGWIN__ && !defined LC_ALL_MASK)
1112 #   ifdef _INTL_REDIRECT_INLINE
1113 extern locale_t libintl_newlocale (int, const char *, locale_t);
1114 #    ifndef __cplusplus
1115 static
1116 #    endif
1117 inline
1118 _INTL_FORCE_INLINE
1119 locale_t newlocale (int __category_mask, const char *__name, locale_t __base)
1120 {
1121   return libintl_newlocale (__category_mask, __name, __base);
1122 }
1123 #   elif !defined _INTL_NO_DEFINE_MACRO_NEWLOCALE
1124 #    ifdef _INTL_REDIRECT_MACROS
1125 #     undef newlocale
1126 #     define newlocale libintl_newlocale
1127 #    endif
1128 extern locale_t newlocale (int, const char *, locale_t)
1129        _INTL_ASM (libintl_newlocale);
1130 #    if defined _INTL_REDIRECT_MACROS && defined __cplusplus && !defined _INTL_CXX_NO_CLOBBER_STD_NAMESPACE
1131 namespace std { using ::libintl_newlocale; }
1132 #    endif
1133 #   endif
1134 #  endif
1135 
1136 # endif
1137 
1138 #endif
1139 
1140 
1141 /* Support for relocatable packages.  */
1142 
1143 /* Sets the original and the current installation prefix of the package.
1144    Relocation simply replaces a pathname starting with the original prefix
1145    by the corresponding pathname with the current prefix instead.  Both
1146    prefixes should be directory names without trailing slash (i.e. use ""
1147    instead of "/").  */
1148 #define libintl_set_relocation_prefix libintl_set_relocation_prefix
1149 extern void
1150        libintl_set_relocation_prefix (const char *orig_prefix,
1151                                       const char *curr_prefix);
1152 
1153 
1154 #ifdef __cplusplus
1155 }
1156 #endif
1157 
1158 #endif /* libintl.h */