1a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* Header describing internals of libintl library.
2b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o   Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
3a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   Written by Ulrich Drepper <drepper@cygnus.com>, 1995.
45bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
5a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   This program is free software; you can redistribute it and/or modify it
6a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   under the terms of the GNU Library General Public License as published
7a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   by the Free Software Foundation; either version 2, or (at your option)
85bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o   any later version.
95bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
105bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o   This program is distributed in the hope that it will be useful,
115bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o   but WITHOUT ANY WARRANTY; without even the implied warranty of
12a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   Library General Public License for more details.
145bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
15a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   You should have received a copy of the GNU Library General Public
16a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   License along with this program; if not, write to the Free Software
17a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
18a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   USA.  */
195bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
205bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#ifndef _GETTEXTP_H
215bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#define _GETTEXTP_H
225bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
23a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#include <stddef.h>		/* Get size_t.  */
24a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
25a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#ifdef _LIBC
26a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# include "../iconv/gconv_int.h"
27a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#else
28a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# if HAVE_ICONV
29a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#  include <iconv.h>
30a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif
31a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif
32a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
335bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#include "loadinfo.h"
345bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
35a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#include "gmo.h"		/* Get nls_uint32.  */
36a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
375bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o/* @@ end of prolog @@ */
385bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
395bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#ifndef internal_function
405bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o# define internal_function
415bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#endif
425bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
43a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#ifndef attribute_hidden
44a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define attribute_hidden
45a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif
46a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
47a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* Tell the compiler when a conditional or integer expression is
48a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   almost always true or almost always false.  */
49a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#ifndef HAVE_BUILTIN_EXPECT
50a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define __builtin_expect(expr, val) (expr)
51a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif
52a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
535bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#ifndef W
545bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o# define W(flag, data) ((flag) ? SWAP (data) : (data))
555bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#endif
565bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
575bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
585bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#ifdef _LIBC
595bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o# include <byteswap.h>
605bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o# define SWAP(i) bswap_32 (i)
615bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#else
625bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'ostatic inline nls_uint32
635bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'oSWAP (i)
645bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o     nls_uint32 i;
655bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o{
665bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o  return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
675bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o}
685bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#endif
695bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
705bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
71a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* In-memory representation of system dependent string.  */
72a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'ostruct sysdep_string_desc
73a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o{
74a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Length of addressed string, including the trailing NUL.  */
75a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  size_t length;
76a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Pointer to addressed string.  */
77a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  const char *pointer;
78a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o};
79a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
80a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* The representation of an opened message catalog.  */
815bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'ostruct loaded_domain
825bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o{
83a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Pointer to memory containing the .mo file.  */
845bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o  const char *data;
85a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed.  */
865bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o  int use_mmap;
87a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Size of mmap()ed memory.  */
885bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o  size_t mmap_size;
89a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* 1 if the .mo file uses a different endianness than this machine.  */
905bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o  int must_swap;
91a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Pointer to additional malloc()ed memory.  */
92a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  void *malloced;
93a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
94a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Number of static strings pairs.  */
955bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o  nls_uint32 nstrings;
96a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Pointer to descriptors of original strings in the file.  */
97a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  const struct string_desc *orig_tab;
98a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Pointer to descriptors of translated strings in the file.  */
99a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  const struct string_desc *trans_tab;
100a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
101a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Number of system dependent strings pairs.  */
102a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  nls_uint32 n_sysdep_strings;
103a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Pointer to descriptors of original sysdep strings.  */
104a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  const struct sysdep_string_desc *orig_sysdep_tab;
105a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Pointer to descriptors of translated sysdep strings.  */
106a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  const struct sysdep_string_desc *trans_sysdep_tab;
107a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
108a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Size of hash table.  */
1095bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o  nls_uint32 hash_size;
110a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* Pointer to hash table.  */
111a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  const nls_uint32 *hash_tab;
112a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  /* 1 if the hash table uses a different endianness than this machine.  */
113a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  int must_swap_hash_tab;
114a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
115a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  int codeset_cntr;
116a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#ifdef _LIBC
117a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  __gconv_t conv;
118a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#else
119a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# if HAVE_ICONV
120a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  iconv_t conv;
121a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif
122a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif
123a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  char **conv_tab;
124a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
125a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  struct expression *plural;
126a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  unsigned long int nplurals;
1275bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o};
1285bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
129a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* We want to allocate a string at the end of the struct.  But ISO C
130a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   doesn't allow zero sized arrays.  */
131a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#ifdef __GNUC__
132a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define ZERO 0
133a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#else
134a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define ZERO 1
135a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif
136a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
137a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* A set of settings bound to a message domain.  Used to store settings
138a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   from bindtextdomain() and bind_textdomain_codeset().  */
1395bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'ostruct binding
1405bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o{
1415bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o  struct binding *next;
1425bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o  char *dirname;
143a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  int codeset_cntr;	/* Incremented each time codeset changes.  */
144a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  char *codeset;
145a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o  char domainname[ZERO];
1465bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o};
1475bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
148a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* A counter which is incremented each time some previous translations
149a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   become invalid.
150a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o   This variable is part of the external ABI of the GNU libintl.  */
151a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'oextern int _nl_msg_cat_cntr;
152a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
153a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#ifndef _LIBC
154b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oconst char *_nl_locale_name (int category, const char *categoryname);
155a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif
156a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
157b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'ostruct loaded_l10nfile *_nl_find_domain (const char *__dirname, char *__locale,
158b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o					 const char *__domainname,
159b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o					 struct binding *__domainbinding)
1605bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o     internal_function;
161b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'ovoid _nl_load_domain (struct loaded_l10nfile *__domain,
162b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o		      struct binding *__domainbinding)
1635bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o     internal_function;
164b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'ovoid _nl_unload_domain (struct loaded_domain *__domain)
1655bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o     internal_function;
166b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oconst char *_nl_init_domain_conv (struct loaded_l10nfile *__domain_file,
167b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o				  struct loaded_domain *__domain,
168b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o				  struct binding *__domainbinding)
169a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o     internal_function;
170b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'ovoid _nl_free_domain_conv (struct loaded_domain *__domain)
171a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o     internal_function;
172a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
173b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'ochar *_nl_find_msg (struct loaded_l10nfile *domain_file,
174b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o		    struct binding *domainbinding, const char *msgid,
175b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o		    size_t *lengthp)
176a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o     internal_function;
177a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
178a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#ifdef _LIBC
179b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oextern char *__gettext (const char *__msgid);
180b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oextern char *__dgettext (const char *__domainname, const char *__msgid);
181b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oextern char *__dcgettext (const char *__domainname, const char *__msgid,
182b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o			  int __category);
183b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oextern char *__ngettext (const char *__msgid1, const char *__msgid2,
184b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o			 unsigned long int __n);
185b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oextern char *__dngettext (const char *__domainname,
186b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o			  const char *__msgid1, const char *__msgid2,
187b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o			  unsigned long int n);
188b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oextern char *__dcngettext (const char *__domainname,
189b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o			   const char *__msgid1, const char *__msgid2,
190b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o			   unsigned long int __n, int __category);
191b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oextern char *__dcigettext (const char *__domainname,
192b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o			   const char *__msgid1, const char *__msgid2,
193b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o			   int __plural, unsigned long int __n,
194b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o			   int __category);
195b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oextern char *__textdomain (const char *__domainname);
196b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oextern char *__bindtextdomain (const char *__domainname,
197b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o			       const char *__dirname);
198b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oextern char *__bind_textdomain_codeset (const char *__domainname,
199b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o					const char *__codeset);
200a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#else
201b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o/* Declare the exported libintl_* functions, in a way that allows us to
202b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o   call them under their real name.  */
203b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# undef _INTL_REDIRECT_INLINE
204b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# undef _INTL_REDIRECT_MACROS
205b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define _INTL_REDIRECT_MACROS
206b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# include "libgnuintl.h"
207b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'oextern char *libintl_dcigettext (const char *__domainname,
208b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o				 const char *__msgid1, const char *__msgid2,
209b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o				 int __plural, unsigned long int __n,
210b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o				 int __category);
211a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif
2125bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
2135bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o/* @@ begin of epilog @@ */
2145bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
2155bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#endif /* gettextP.h  */
216