119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Message catalogs for internationalization.
219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   This program is free software; you can redistribute it and/or modify it
519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   under the terms of the GNU Library General Public License as published
619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   by the Free Software Foundation; either version 2, or (at your option)
719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   any later version.
819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   This program is distributed in the hope that it will be useful,
1019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   but WITHOUT ANY WARRANTY; without even the implied warranty of
1119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   Library General Public License for more details.
1319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
1419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   You should have received a copy of the GNU Library General Public
1519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   License along with this program; if not, write to the Free Software
1619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
1719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   USA.  */
1819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
1919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifndef _LIBINTL_H
2019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define _LIBINTL_H	1
2119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
2219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#include <locale.h>
2319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
2419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* The LC_MESSAGES locale category is the category used by the functions
2519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   gettext() and dgettext().  It is specified in POSIX, but not in ANSI C.
2619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   On systems that don't define it, use an arbitrary value instead.
2719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   On Solaris, <locale.h> defines __LOCALE_H (or _LOCALE_H in Solaris 2.5)
2819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   then includes <libintl.h> (i.e. this file!) and then only defines
2919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   LC_MESSAGES.  To avoid a redefinition warning, don't define LC_MESSAGES
3019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   in this case.  */
3119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun))
3219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define LC_MESSAGES 1729
3319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
3419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
3519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* We define an additional symbol to signal that we use the GNU
3619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   implementation of gettext.  */
3719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define __USE_GNU_GETTEXT 1
3819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
3919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Provide information about the supported file formats.  Returns the
4019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   maximum minor revision number supported for a given major revision.  */
4119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \
4219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project  ((major) == 0 ? 1 : -1)
4319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
4419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Resolve a platform specific conflict on DJGPP.  GNU gettext takes
4519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   precedence over _conio_gettext.  */
4619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef __DJGPP__
4719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# undef gettext
4819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
4919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
5019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef __cplusplus
5119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern "C" {
5219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
5319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
5419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
5519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* We redirect the functions to those prefixed with "libintl_".  This is
5619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   necessary, because some systems define gettext/textdomain/... in the C
5719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer).
5819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   If we used the unprefixed names, there would be cases where the
5919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   definition in the C library would override the one in the libintl.so
6019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   shared library.  Recall that on ELF systems, the symbols are looked
6119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   up in the following order:
6219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project     1. in the executable,
6319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project     2. in the shared libraries specified on the link command line, in order,
6419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project     3. in the dependencies of the shared libraries specified on the link
6519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project        command line,
6619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project     4. in the dlopen()ed shared libraries, in the order in which they were
6719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project        dlopen()ed.
6819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   The definition in the C library would override the one in libintl.so if
6919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   either
7019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project     * -lc is given on the link command line and -lintl isn't, or
7119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project     * -lc is given on the link command line before -lintl, or
7219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project     * libintl.so is a dependency of a dlopen()ed shared library but not
7319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project       linked to the executable at link time.
7419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   Since Solaris gettext() behaves differently than GNU gettext(), this
7519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   would be unacceptable.
7619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
7719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   The redirection happens by default through macros in C, so that &gettext
7819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   is independent of the compilation unit, but through inline functions in
7919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   C++, in order not to interfere with the name mangling of class fields or
8019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   class methods called 'gettext'.  */
8119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
8219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS.
8319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   If he doesn't, we choose the method.  A third possible method is
8419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   _INTL_REDIRECT_ASM, supported only by GCC.  */
8519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
8619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# if __GNUC__ >= 2 && !defined __APPLE_CC__ && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus)
8719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#  define _INTL_REDIRECT_ASM
8819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# else
8919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#  ifdef __cplusplus
9019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#   define _INTL_REDIRECT_INLINE
9119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#  else
9219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#   define _INTL_REDIRECT_MACROS
9319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#  endif
9419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# endif
9519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
9619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Auxiliary macros.  */
9719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_ASM
9819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname))
9919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring
10019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define _INTL_STRINGIFY(prefix) #prefix
10119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#else
10219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define _INTL_ASM(cname)
10319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
10419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
10519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Look up MSGID in the current default message catalog for the current
10619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   LC_MESSAGES locale.  If not found, returns MSGID itself (the default
10719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   text).  */
10819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_INLINE
10919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *libintl_gettext (const char *__msgid);
11019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectstatic inline char *gettext (const char *__msgid)
11119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
11219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project  return libintl_gettext (__msgid);
11319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
11419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#else
11519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_MACROS
11619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define gettext libintl_gettext
11719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
11819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *gettext (const char *__msgid)
11919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project       _INTL_ASM (libintl_gettext);
12019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
12119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
12219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Look up MSGID in the DOMAINNAME message catalog for the current
12319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   LC_MESSAGES locale.  */
12419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_INLINE
12519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *libintl_dgettext (const char *__domainname, const char *__msgid);
12619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectstatic inline char *dgettext (const char *__domainname, const char *__msgid)
12719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
12819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project  return libintl_dgettext (__domainname, __msgid);
12919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
13019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#else
13119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_MACROS
13219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define dgettext libintl_dgettext
13319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
13419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *dgettext (const char *__domainname, const char *__msgid)
13519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project       _INTL_ASM (libintl_dgettext);
13619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
13719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
13819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
13919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   locale.  */
14019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_INLINE
14119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *libintl_dcgettext (const char *__domainname, const char *__msgid,
14219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				int __category);
14319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectstatic inline char *dcgettext (const char *__domainname, const char *__msgid,
14419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			       int __category)
14519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
14619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project  return libintl_dcgettext (__domainname, __msgid, __category);
14719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
14819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#else
14919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_MACROS
15019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define dcgettext libintl_dcgettext
15119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
15219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *dcgettext (const char *__domainname, const char *__msgid,
15319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			int __category)
15419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project       _INTL_ASM (libintl_dcgettext);
15519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
15619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
15719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
15819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Similar to `gettext' but select the plural form corresponding to the
15919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   number N.  */
16019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_INLINE
16119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
16219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			       unsigned long int __n);
16319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectstatic inline char *ngettext (const char *__msgid1, const char *__msgid2,
16419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			      unsigned long int __n)
16519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
16619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project  return libintl_ngettext (__msgid1, __msgid2, __n);
16719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
16819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#else
16919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_MACROS
17019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define ngettext libintl_ngettext
17119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
17219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *ngettext (const char *__msgid1, const char *__msgid2,
17319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		       unsigned long int __n)
17419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project       _INTL_ASM (libintl_ngettext);
17519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
17619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
17719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Similar to `dgettext' but select the plural form corresponding to the
17819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   number N.  */
17919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_INLINE
18019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
18119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				const char *__msgid2, unsigned long int __n);
18219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectstatic inline char *dngettext (const char *__domainname, const char *__msgid1,
18319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			       const char *__msgid2, unsigned long int __n)
18419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
18519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project  return libintl_dngettext (__domainname, __msgid1, __msgid2, __n);
18619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
18719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#else
18819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_MACROS
18919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define dngettext libintl_dngettext
19019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
19119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *dngettext (const char *__domainname,
19219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			const char *__msgid1, const char *__msgid2,
19319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			unsigned long int __n)
19419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project       _INTL_ASM (libintl_dngettext);
19519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
19619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
19719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Similar to `dcgettext' but select the plural form corresponding to the
19819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   number N.  */
19919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_INLINE
20019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *libintl_dcngettext (const char *__domainname,
20119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				 const char *__msgid1, const char *__msgid2,
20219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				 unsigned long int __n, int __category);
20319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectstatic inline char *dcngettext (const char *__domainname,
20419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				const char *__msgid1, const char *__msgid2,
20519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				unsigned long int __n, int __category)
20619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
20719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project  return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category);
20819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
20919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#else
21019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_MACROS
21119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define dcngettext libintl_dcngettext
21219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
21319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *dcngettext (const char *__domainname,
21419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			 const char *__msgid1, const char *__msgid2,
21519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			 unsigned long int __n, int __category)
21619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project       _INTL_ASM (libintl_dcngettext);
21719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
21819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
21919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
22019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Set the current default message catalog to DOMAINNAME.
22119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   If DOMAINNAME is null, return the current default.
22219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   If DOMAINNAME is "", reset to the default of "messages".  */
22319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_INLINE
22419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *libintl_textdomain (const char *__domainname);
22519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectstatic inline char *textdomain (const char *__domainname)
22619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
22719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project  return libintl_textdomain (__domainname);
22819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
22919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#else
23019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_MACROS
23119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define textdomain libintl_textdomain
23219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
23319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *textdomain (const char *__domainname)
23419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project       _INTL_ASM (libintl_textdomain);
23519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
23619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
23719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Specify that the DOMAINNAME message catalog will be found
23819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   in DIRNAME rather than in the system locale data base.  */
23919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_INLINE
24019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *libintl_bindtextdomain (const char *__domainname,
24119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				     const char *__dirname);
24219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectstatic inline char *bindtextdomain (const char *__domainname,
24319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				    const char *__dirname)
24419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
24519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project  return libintl_bindtextdomain (__domainname, __dirname);
24619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
24719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#else
24819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_MACROS
24919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define bindtextdomain libintl_bindtextdomain
25019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
25119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *bindtextdomain (const char *__domainname, const char *__dirname)
25219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project       _INTL_ASM (libintl_bindtextdomain);
25319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
25419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
25519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Specify the character encoding in which the messages from the
25619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   DOMAINNAME message catalog will be returned.  */
25719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_INLINE
25819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *libintl_bind_textdomain_codeset (const char *__domainname,
25919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project					      const char *__codeset);
26019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectstatic inline char *bind_textdomain_codeset (const char *__domainname,
26119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project					     const char *__codeset)
26219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
26319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project  return libintl_bind_textdomain_codeset (__domainname, __codeset);
26419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
26519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#else
26619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef _INTL_REDIRECT_MACROS
26719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# define bind_textdomain_codeset libintl_bind_textdomain_codeset
26819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
26919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *bind_textdomain_codeset (const char *__domainname,
27019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				      const char *__codeset)
27119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project       _INTL_ASM (libintl_bind_textdomain_codeset);
27219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
27319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
27419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
27519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Support for format strings with positions in *printf(), following the
27619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   POSIX/XSI specification.
27719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   Note: These replacements for the *printf() functions are visible only
27819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   in source files that #include <libintl.h> or #include "gettext.h".
27919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   Packages that use *printf() in source files that don't refer to _()
28019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   or gettext() but for which the format string could be the return value
28119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   of _() or gettext() need to add this #include.  Oh well.  */
28219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
28319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#if !@HAVE_POSIX_PRINTF@
28419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
28519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#include <stdio.h>
28619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#include <stddef.h>
28719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
28819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Get va_list.  */
28919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#if __STDC__ || defined __cplusplus || defined _MSC_VER
29019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# include <stdarg.h>
29119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#else
29219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# include <varargs.h>
29319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
29419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
29519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef fprintf
29619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define fprintf libintl_fprintf
29719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int fprintf (FILE *, const char *, ...);
29819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef vfprintf
29919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define vfprintf libintl_vfprintf
30019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int vfprintf (FILE *, const char *, va_list);
30119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
30219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef printf
30319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define printf libintl_printf
30419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int printf (const char *, ...);
30519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef vprintf
30619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define vprintf libintl_vprintf
30719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int vprintf (const char *, va_list);
30819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
30919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef sprintf
31019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define sprintf libintl_sprintf
31119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int sprintf (char *, const char *, ...);
31219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef vsprintf
31319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define vsprintf libintl_vsprintf
31419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int vsprintf (char *, const char *, va_list);
31519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
31619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#if @HAVE_SNPRINTF@
31719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
31819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef snprintf
31919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define snprintf libintl_snprintf
32019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int snprintf (char *, size_t, const char *, ...);
32119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef vsnprintf
32219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define vsnprintf libintl_vsnprintf
32319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int vsnprintf (char *, size_t, const char *, va_list);
32419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
32519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
32619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
32719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#if @HAVE_ASPRINTF@
32819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
32919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef asprintf
33019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define asprintf libintl_asprintf
33119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int asprintf (char **, const char *, ...);
33219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef vasprintf
33319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define vasprintf libintl_vasprintf
33419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int vasprintf (char **, const char *, va_list);
33519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
33619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
33719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
33819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#if @HAVE_WPRINTF@
33919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
34019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef fwprintf
34119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define fwprintf libintl_fwprintf
34219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int fwprintf (FILE *, const wchar_t *, ...);
34319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef vfwprintf
34419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define vfwprintf libintl_vfwprintf
34519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int vfwprintf (FILE *, const wchar_t *, va_list);
34619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
34719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef wprintf
34819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define wprintf libintl_wprintf
34919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int wprintf (const wchar_t *, ...);
35019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef vwprintf
35119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define vwprintf libintl_vwprintf
35219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int vwprintf (const wchar_t *, va_list);
35319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
35419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef swprintf
35519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define swprintf libintl_swprintf
35619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int swprintf (wchar_t *, size_t, const wchar_t *, ...);
35719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#undef vswprintf
35819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define vswprintf libintl_vswprintf
35919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list);
36019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
36119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
36219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
36319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
36419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
36519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
36619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Support for relocatable packages.  */
36719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
36819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Sets the original and the current installation prefix of the package.
36919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   Relocation simply replaces a pathname starting with the original prefix
37019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   by the corresponding pathname with the current prefix instead.  Both
37119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   prefixes should be directory names without trailing slash (i.e. use ""
37219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project   instead of "/").  */
37319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define libintl_set_relocation_prefix libintl_set_relocation_prefix
37419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern void
37519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project       libintl_set_relocation_prefix (const char *orig_prefix,
37619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				      const char *curr_prefix);
37719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
37819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
37919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef __cplusplus
38019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
38119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif
38219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
38319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif /* libintl.h */
384