19 #define _LIBGETTEXT_H 1    30 # ifdef DEFAULT_TEXT_DOMAIN    32 #  define gettext(Msgid) \    33      dgettext (DEFAULT_TEXT_DOMAIN, Msgid)    35 #  define ngettext(Msgid1, Msgid2, N) \    36      dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)    54 #if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)    56 # if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H    67 # define gettext(Msgid) ((const char *) (Msgid))    69 # define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))    71 # define dcgettext(Domainname, Msgid, Category) \    72     ((void) (Category), dgettext (Domainname, Msgid))    74 # define ngettext(Msgid1, Msgid2, N) \    76      ? ((void) (Msgid2), (const char *) (Msgid1)) \    77      : ((void) (Msgid1), (const char *) (Msgid2)))    79 # define dngettext(Domainname, Msgid1, Msgid2, N) \    80     ((void) (Domainname), ngettext (Msgid1, Msgid2, N))    82 # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \    83     ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N))    85 # define textdomain(Domainname) ((const char *) (Domainname))    86 # undef bindtextdomain    87 # define bindtextdomain(Domainname, Dirname) \    88     ((void) (Domainname), (const char *) (Dirname))    89 # undef bind_textdomain_codeset    90 # define bind_textdomain_codeset(Domainname, Codeset) \    91     ((void) (Domainname), (const char *) (Codeset))    96 #ifdef GNULIB_defined_setlocale    98 # define setlocale rpl_setlocale   108 #define gettext_noop(String) String   111 #define GETTEXT_CONTEXT_GLUE "\004"   117 #ifdef DEFAULT_TEXT_DOMAIN   118 # define pgettext(Msgctxt, Msgid) \   119    pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)   121 # define pgettext(Msgctxt, Msgid) \   122    pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)   124 #define dpgettext(Domainname, Msgctxt, Msgid) \   125   pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)   126 #define dcpgettext(Domainname, Msgctxt, Msgid, Category) \   127   pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)   128 #ifdef DEFAULT_TEXT_DOMAIN   129 # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \   130    npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)   132 # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \   133    npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)   135 #define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \   136   npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)   137 #define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \   138   npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)   148 pgettext_aux (
const char *domain,
   149               const char *msg_ctxt_id, 
const char *msgid,
   152   const char *translation = 
dcgettext (domain, msg_ctxt_id, category);
   153   if (translation == msg_ctxt_id)
   167 npgettext_aux (
const char *domain,
   168                const char *msg_ctxt_id, 
const char *msgid,
   169                const char *msgid_plural, 
unsigned long int n,
   172   const char *translation =
   173     dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
   174   if (translation == msg_ctxt_id || translation == msgid_plural)
   175     return (n == 1 ? msgid : msgid_plural);
   186 #if (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \   188 # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1   190 # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0   193 #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS   197 #define pgettext_expr(Msgctxt, Msgid) \   198   dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES)   199 #define dpgettext_expr(Domainname, Msgctxt, Msgid) \   200   dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES)   210 dcpgettext_expr (
const char *domain,
   211                  const char *msgctxt, 
const char *msgid,
   214   size_t msgctxt_len = strlen (msgctxt) + 1;
   215   size_t msgid_len = strlen (msgid) + 1;
   216   const char *translation;
   217 #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS   218   char msg_ctxt_id[msgctxt_len + msgid_len];
   222     (msgctxt_len + msgid_len <= 
sizeof (buf)
   224      : (
char *) malloc (msgctxt_len + msgid_len));
   225   if (msg_ctxt_id != NULL)
   228       int found_translation;
   229       memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
   230       msg_ctxt_id[msgctxt_len - 1] = 
'\004';
   231       memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
   232       translation = 
dcgettext (domain, msg_ctxt_id, category);
   233       found_translation = (translation != msg_ctxt_id);
   234 #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS   235       if (msg_ctxt_id != buf)
   238       if (found_translation)
   244 #define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \   245   dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)   246 #define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \   247   dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)   257 dcnpgettext_expr (
const char *domain,
   258                   const char *msgctxt, 
const char *msgid,
   259                   const char *msgid_plural, 
unsigned long int n,
   262   size_t msgctxt_len = strlen (msgctxt) + 1;
   263   size_t msgid_len = strlen (msgid) + 1;
   264   const char *translation;
   265 #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS   266   char msg_ctxt_id[msgctxt_len + msgid_len];
   270     (msgctxt_len + msgid_len <= 
sizeof (buf)
   272      : (
char *) malloc (msgctxt_len + msgid_len));
   273   if (msg_ctxt_id != NULL)
   276       int found_translation;
   277       memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
   278       msg_ctxt_id[msgctxt_len - 1] = 
'\004';
   279       memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
   280       translation = 
dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
   281       found_translation = !(translation == msg_ctxt_id || translation == msgid_plural);
   282 #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS   283       if (msg_ctxt_id != buf)
   286       if (found_translation)
   289   return (n == 1 ? msgid : msgid_plural);
 #define dcngettext(Domainname, Msgid1, Msgid2, N, Category)
 
#define dcgettext(Domainname, Msgid, Category)