Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | | - |
7 | | - |
8 | | - |
9 | | - |
10 | | - |
11 | | - |
12 | | - |
13 | | - |
14 | | - |
15 | | - |
16 | | - |
17 | | - |
18 | #ifndef _LIBGETTEXT_H | - |
19 | #define _LIBGETTEXT_H 1 | - |
20 | | - |
21 | | - |
22 | | - |
23 | #if defined ENABLE_NLS && ENABLE_NLS | - |
24 | | - |
25 | | - |
26 | # include <libintl.h> | - |
27 | | - |
28 | | - |
29 | | - |
30 | | - |
31 | # ifdef DEFAULT_TEXT_DOMAIN | - |
32 | # undef gettext | - |
33 | # define gettext(Msgid) \ | - |
34 | dgettext (DEFAULT_TEXT_DOMAIN, Msgid) | - |
35 | # undef ngettext | - |
36 | # define ngettext(Msgid1, Msgid2, N) \ | - |
37 | dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) | - |
38 | # endif | - |
39 | | - |
40 | #else | - |
41 | | - |
42 | | - |
43 | | - |
44 | | - |
45 | | - |
46 | | - |
47 | | - |
48 | #if defined(__sun) | - |
49 | # include <locale.h> | - |
50 | #endif | - |
51 | | - |
52 | | - |
53 | | - |
54 | | - |
55 | #if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) | - |
56 | # include <cstdlib> | - |
57 | # if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H | - |
58 | # include <libintl.h> | - |
59 | # endif | - |
60 | #endif | - |
61 | | - |
62 | | - |
63 | | - |
64 | | - |
65 | | - |
66 | | - |
67 | # undef gettext | - |
68 | # define gettext(Msgid) ((const char *) (Msgid)) | - |
69 | # undef dgettext | - |
70 | # define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) | - |
71 | # undef dcgettext | - |
72 | # define dcgettext(Domainname, Msgid, Category) \ | - |
73 | ((void) (Category), dgettext (Domainname, Msgid)) | - |
74 | # undef ngettext | - |
75 | # define ngettext(Msgid1, Msgid2, N) \ | - |
76 | ((N) == 1 \ | - |
77 | ? ((void) (Msgid2), (const char *) (Msgid1)) \ | - |
78 | : ((void) (Msgid1), (const char *) (Msgid2))) | - |
79 | # undef dngettext | - |
80 | # define dngettext(Domainname, Msgid1, Msgid2, N) \ | - |
81 | ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) | - |
82 | # undef dcngettext | - |
83 | # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ | - |
84 | ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N)) | - |
85 | # undef textdomain | - |
86 | # define textdomain(Domainname) ((const char *) (Domainname)) | - |
87 | # undef bindtextdomain | - |
88 | # define bindtextdomain(Domainname, Dirname) \ | - |
89 | ((void) (Domainname), (const char *) (Dirname)) | - |
90 | # undef bind_textdomain_codeset | - |
91 | # define bind_textdomain_codeset(Domainname, Codeset) \ | - |
92 | ((void) (Domainname), (const char *) (Codeset)) | - |
93 | | - |
94 | #endif | - |
95 | | - |
96 | | - |
97 | #ifdef GNULIB_defined_setlocale | - |
98 | # undef setlocale | - |
99 | # define setlocale rpl_setlocale | - |
100 | #endif | - |
101 | | - |
102 | | - |
103 | | - |
104 | | - |
105 | | - |
106 | | - |
107 | | - |
108 | | - |
109 | #define gettext_noop(String) String | - |
110 | | - |
111 | | - |
112 | #define GETTEXT_CONTEXT_GLUE "\004" | - |
113 | | - |
114 | | - |
115 | | - |
116 | | - |
117 | | - |
118 | #ifdef DEFAULT_TEXT_DOMAIN | - |
119 | # define pgettext(Msgctxt, Msgid) \ | - |
120 | pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) | - |
121 | #else | - |
122 | # define pgettext(Msgctxt, Msgid) \ | - |
123 | pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) | - |
124 | #endif | - |
125 | #define dpgettext(Domainname, Msgctxt, Msgid) \ | - |
126 | pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) | - |
127 | #define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ | - |
128 | pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) | - |
129 | #ifdef DEFAULT_TEXT_DOMAIN | - |
130 | # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ | - |
131 | npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) | - |
132 | #else | - |
133 | # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ | - |
134 | npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) | - |
135 | #endif | - |
136 | #define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ | - |
137 | npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) | - |
138 | #define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ | - |
139 | npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) | - |
140 | | - |
141 | #ifdef __GNUC__ | - |
142 | __inline | - |
143 | #else | - |
144 | #ifdef __cplusplus | - |
145 | inline | - |
146 | #endif | - |
147 | #endif | - |
148 | static const char * | - |
149 | pgettext_aux (const char *domain, | - |
150 | const char *msg_ctxt_id, const char *msgid, | - |
151 | int category) | - |
152 | { | - |
153 | const char *translation = dcgettext (domain, msg_ctxt_id, category); | - |
154 | if (translation == msg_ctxt_id)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
155 | return msgid; never executed: return msgid; | 0 |
156 | else | - |
157 | return translation; never executed: return translation; | 0 |
158 | } | - |
159 | | - |
160 | #ifdef __GNUC__ | - |
161 | __inline | - |
162 | #else | - |
163 | #ifdef __cplusplus | - |
164 | inline | - |
165 | #endif | - |
166 | #endif | - |
167 | static const char * | - |
168 | npgettext_aux (const char *domain, | - |
169 | const char *msg_ctxt_id, const char *msgid, | - |
170 | const char *msgid_plural, unsigned long int n, | - |
171 | int category) | - |
172 | { | - |
173 | const char *translation = | - |
174 | dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); | - |
175 | if (translation == msg_ctxt_id || translation == msgid_plural)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
176 | return (n == 1 ? msgid : msgid_plural); never executed: return (n == 1 ? msgid : msgid_plural); | 0 |
177 | else | - |
178 | return translation; never executed: return translation; | 0 |
179 | } | - |
180 | | - |
181 | | - |
182 | | - |
183 | | - |
184 | | - |
185 | #include <string.h> | - |
186 | | - |
187 | #if (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \ | - |
188 | /* || __STDC_VERSION__ == 199901L | - |
189 | || (__STDC_VERSION__ >= 201112L && !defined __STDC_NO_VLA__) */ ) | - |
190 | # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1 | - |
191 | #else | - |
192 | # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0 | - |
193 | #endif | - |
194 | | - |
195 | #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | - |
196 | #include <stdlib.h> | - |
197 | #endif | - |
198 | | - |
199 | #define pgettext_expr(Msgctxt, Msgid) \ | - |
200 | dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES) | - |
201 | #define dpgettext_expr(Domainname, Msgctxt, Msgid) \ | - |
202 | dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) | - |
203 | | - |
204 | #ifdef __GNUC__ | - |
205 | __inline | - |
206 | #else | - |
207 | #ifdef __cplusplus | - |
208 | inline | - |
209 | #endif | - |
210 | #endif | - |
211 | static const char * | - |
212 | dcpgettext_expr (const char *domain, | - |
213 | const char *msgctxt, const char *msgid, | - |
214 | int category) | - |
215 | { | - |
216 | size_t msgctxt_len = strlen (msgctxt) + 1; | - |
217 | size_t msgid_len = strlen (msgid) + 1; | - |
218 | const char *translation; | - |
219 | #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | - |
220 | char msg_ctxt_id[msgctxt_len + msgid_len]; | - |
221 | #else | - |
222 | char buf[1024]; | - |
223 | char *msg_ctxt_id = | - |
224 | (msgctxt_len + msgid_len <= sizeof (buf) | - |
225 | ? buf | - |
226 | : (char *) malloc (msgctxt_len + msgid_len)); | - |
227 | if (msg_ctxt_id != NULL) | - |
228 | #endif | - |
229 | { | - |
230 | int found_translation; | - |
231 | memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); | - |
232 | msg_ctxt_id[msgctxt_len - 1] = '\004'; | - |
233 | memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); | - |
234 | translation = dcgettext (domain, msg_ctxt_id, category); | - |
235 | found_translation = (translation != msg_ctxt_id); | - |
236 | #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | - |
237 | if (msg_ctxt_id != buf) | - |
238 | free (msg_ctxt_id); | - |
239 | #endif | - |
240 | if (found_translation)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
241 | return translation; never executed: return translation; | 0 |
242 | } | - |
243 | return msgid; never executed: return msgid; | 0 |
244 | } | - |
245 | | - |
246 | #define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \ | - |
247 | dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) | - |
248 | #define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ | - |
249 | dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) | - |
250 | | - |
251 | #ifdef __GNUC__ | - |
252 | __inline | - |
253 | #else | - |
254 | #ifdef __cplusplus | - |
255 | inline | - |
256 | #endif | - |
257 | #endif | - |
258 | static const char * | - |
259 | dcnpgettext_expr (const char *domain, | - |
260 | const char *msgctxt, const char *msgid, | - |
261 | const char *msgid_plural, unsigned long int n, | - |
262 | int category) | - |
263 | { | - |
264 | size_t msgctxt_len = strlen (msgctxt) + 1; | - |
265 | size_t msgid_len = strlen (msgid) + 1; | - |
266 | const char *translation; | - |
267 | #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | - |
268 | char msg_ctxt_id[msgctxt_len + msgid_len]; | - |
269 | #else | - |
270 | char buf[1024]; | - |
271 | char *msg_ctxt_id = | - |
272 | (msgctxt_len + msgid_len <= sizeof (buf) | - |
273 | ? buf | - |
274 | : (char *) malloc (msgctxt_len + msgid_len)); | - |
275 | if (msg_ctxt_id != NULL) | - |
276 | #endif | - |
277 | { | - |
278 | int found_translation; | - |
279 | memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); | - |
280 | msg_ctxt_id[msgctxt_len - 1] = '\004'; | - |
281 | memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); | - |
282 | translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); | - |
283 | found_translation = !(translation == msg_ctxt_id || translation == msgid_plural);TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
284 | #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | - |
285 | if (msg_ctxt_id != buf) | - |
286 | free (msg_ctxt_id); | - |
287 | #endif | - |
288 | if (found_translation)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
289 | return translation; never executed: return translation; | 0 |
290 | } | - |
291 | return (n == 1 ? msgid : msgid_plural); never executed: return (n == 1 ? msgid : msgid_plural); | 0 |
292 | } | - |
293 | | - |
294 | #endif /* _LIBGETTEXT_H */ | - |
| | |