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