Imported Upstream version 0.18.1.1
[platform/upstream/gettext.git] / gettext-tools / tests / format-gcc-internal-2
1 #! /bin/sh
2
3 # Test checking of GCC internal format strings.
4
5 tmpfiles=""
6 trap 'rm -fr $tmpfiles' 1 2 3 15
7
8 tmpfiles="$tmpfiles f-gi-2.data"
9 cat <<\EOF > f-gi-2.data
10 # Valid: %% doesn't count
11 msgid  "abc%%def"
12 msgstr "xyz"
13 # Valid: %< doesn't count
14 msgid  "abc%<def"
15 msgstr "xyz"
16 # Valid: %> doesn't count
17 msgid  "abc%>def"
18 msgstr "xyz"
19 # Valid: %' doesn't count
20 msgid  "abc%'def"
21 msgstr "xyz"
22 # Invalid: %m consumes err_no
23 msgid  "abc%mdef"
24 msgstr "xyz"
25 # Invalid: %m consumes err_no
26 msgid  "abc"
27 msgstr "xyz%muvw"
28 # Invalid: invalid msgstr
29 msgid  "abc%%def"
30 msgstr "xyz%"
31 # Valid: same arguments
32 msgid  "abc%s%Hdef"
33 msgstr "xyz%s%H"
34 # Valid: same arguments, with different flags
35 msgid  "abc%s%Hdef"
36 msgstr "xyz%qs%qH"
37 # Valid: same arguments, with different widths
38 msgid  "abc%.*sdef"
39 msgstr "xyz%i%s"
40 # Valid: same arguments but in numbered syntax
41 msgid  "abc%s%ddef"
42 msgstr "xyz%1$s%2$d"
43 # Valid: permutation
44 msgid  "abc%s%d%cdef"
45 msgstr "xyz%3$c%2$d%1$s"
46 # Valid: permutation with width
47 msgid  "abc%c%.*sdef"
48 msgstr "xyz%3$.*2$s%1$c"
49 # Invalid: too few arguments
50 msgid  "abc%sdef%u"
51 msgstr "xyz%s"
52 # Invalid: too many arguments
53 msgid  "abc%udef"
54 msgstr "xyz%uvw%c"
55 # Valid: same numbered arguments, with different widths
56 msgid  "abc%2$5s%1$4s"
57 msgstr "xyz%2$4s%1$5s"
58 # Invalid: missing argument
59 msgid  "abc%2$sdef%1$u"
60 msgstr "xyz%1$u"
61 # Invalid: missing argument
62 msgid  "abc%1$sdef%2$u"
63 msgstr "xyz%2$u"
64 # Invalid: added argument
65 msgid  "abc%1$udef"
66 msgstr "xyz%1$uvw%2$c"
67 # Valid: type compatibility
68 msgid  "abc%i"
69 msgstr "xyz%d"
70 # Valid: type compatibility
71 msgid  "abc%o"
72 msgstr "xyz%u"
73 # Valid: type compatibility
74 msgid  "abc%u"
75 msgstr "xyz%x"
76 # Invalid: type incompatibility
77 msgid  "abc%c"
78 msgstr "xyz%s"
79 # Invalid: type incompatibility
80 msgid  "abc%c"
81 msgstr "xyz%i"
82 # Invalid: type incompatibility
83 msgid  "abc%c"
84 msgstr "xyz%u"
85 # Invalid: type incompatibility
86 msgid  "abc%c"
87 msgstr "xyz%p"
88 # Invalid: type incompatibility
89 msgid  "abc%c"
90 msgstr "xyz%H"
91 # Invalid: type incompatibility
92 msgid  "abc%c"
93 msgstr "xyz%D"
94 # Invalid: type incompatibility
95 msgid  "abc%c"
96 msgstr "xyz%F"
97 # Invalid: type incompatibility
98 msgid  "abc%c"
99 msgstr "xyz%T"
100 # Invalid: type incompatibility
101 msgid  "abc%c"
102 msgstr "xyz%A"
103 # Invalid: type incompatibility
104 msgid  "abc%c"
105 msgstr "xyz%C"
106 # Invalid: type incompatibility
107 msgid  "abc%c"
108 msgstr "xyz%E"
109 # Invalid: type incompatibility
110 msgid  "abc%c"
111 msgstr "xyz%L"
112 # Invalid: type incompatibility
113 msgid  "abc%c"
114 msgstr "xyz%O"
115 # Invalid: type incompatibility
116 msgid  "abc%c"
117 msgstr "xyz%P"
118 # Invalid: type incompatibility
119 msgid  "abc%c"
120 msgstr "xyz%Q"
121 # Invalid: type incompatibility
122 msgid  "abc%c"
123 msgstr "xyz%V"
124 # Invalid: type incompatibility
125 msgid  "abc%s"
126 msgstr "xyz%i"
127 # Invalid: type incompatibility
128 msgid  "abc%s"
129 msgstr "xyz%u"
130 # Invalid: type incompatibility
131 msgid  "abc%s"
132 msgstr "xyz%p"
133 # Invalid: type incompatibility
134 msgid  "abc%s"
135 msgstr "xyz%H"
136 # Invalid: type incompatibility
137 msgid  "abc%s"
138 msgstr "xyz%D"
139 # Invalid: type incompatibility
140 msgid  "abc%s"
141 msgstr "xyz%F"
142 # Invalid: type incompatibility
143 msgid  "abc%s"
144 msgstr "xyz%T"
145 # Invalid: type incompatibility
146 msgid  "abc%s"
147 msgstr "xyz%A"
148 # Invalid: type incompatibility
149 msgid  "abc%s"
150 msgstr "xyz%C"
151 # Invalid: type incompatibility
152 msgid  "abc%s"
153 msgstr "xyz%E"
154 # Invalid: type incompatibility
155 msgid  "abc%s"
156 msgstr "xyz%L"
157 # Invalid: type incompatibility
158 msgid  "abc%s"
159 msgstr "xyz%O"
160 # Invalid: type incompatibility
161 msgid  "abc%s"
162 msgstr "xyz%P"
163 # Invalid: type incompatibility
164 msgid  "abc%s"
165 msgstr "xyz%Q"
166 # Invalid: type incompatibility
167 msgid  "abc%s"
168 msgstr "xyz%V"
169 # Invalid: type incompatibility
170 msgid  "abc%i"
171 msgstr "xyz%u"
172 # Invalid: type incompatibility
173 msgid  "abc%i"
174 msgstr "xyz%p"
175 # Invalid: type incompatibility
176 msgid  "abc%i"
177 msgstr "xyz%H"
178 # Invalid: type incompatibility
179 msgid  "abc%i"
180 msgstr "xyz%D"
181 # Invalid: type incompatibility
182 msgid  "abc%i"
183 msgstr "xyz%F"
184 # Invalid: type incompatibility
185 msgid  "abc%i"
186 msgstr "xyz%T"
187 # Invalid: type incompatibility
188 msgid  "abc%i"
189 msgstr "xyz%A"
190 # Invalid: type incompatibility
191 msgid  "abc%i"
192 msgstr "xyz%C"
193 # Invalid: type incompatibility
194 msgid  "abc%i"
195 msgstr "xyz%E"
196 # Invalid: type incompatibility
197 msgid  "abc%i"
198 msgstr "xyz%L"
199 # Invalid: type incompatibility
200 msgid  "abc%i"
201 msgstr "xyz%O"
202 # Invalid: type incompatibility
203 msgid  "abc%i"
204 msgstr "xyz%P"
205 # Invalid: type incompatibility
206 msgid  "abc%i"
207 msgstr "xyz%Q"
208 # Invalid: type incompatibility
209 msgid  "abc%i"
210 msgstr "xyz%V"
211 # Invalid: type incompatibility
212 msgid  "abc%u"
213 msgstr "xyz%p"
214 # Invalid: type incompatibility
215 msgid  "abc%u"
216 msgstr "xyz%H"
217 # Invalid: type incompatibility
218 msgid  "abc%u"
219 msgstr "xyz%D"
220 # Invalid: type incompatibility
221 msgid  "abc%u"
222 msgstr "xyz%F"
223 # Invalid: type incompatibility
224 msgid  "abc%u"
225 msgstr "xyz%T"
226 # Invalid: type incompatibility
227 msgid  "abc%u"
228 msgstr "xyz%A"
229 # Invalid: type incompatibility
230 msgid  "abc%u"
231 msgstr "xyz%C"
232 # Invalid: type incompatibility
233 msgid  "abc%u"
234 msgstr "xyz%E"
235 # Invalid: type incompatibility
236 msgid  "abc%u"
237 msgstr "xyz%L"
238 # Invalid: type incompatibility
239 msgid  "abc%u"
240 msgstr "xyz%O"
241 # Invalid: type incompatibility
242 msgid  "abc%u"
243 msgstr "xyz%P"
244 # Invalid: type incompatibility
245 msgid  "abc%u"
246 msgstr "xyz%Q"
247 # Invalid: type incompatibility
248 msgid  "abc%u"
249 msgstr "xyz%V"
250 # Invalid: type incompatibility
251 msgid  "abc%p"
252 msgstr "xyz%H"
253 # Invalid: type incompatibility
254 msgid  "abc%p"
255 msgstr "xyz%D"
256 # Invalid: type incompatibility
257 msgid  "abc%p"
258 msgstr "xyz%F"
259 # Invalid: type incompatibility
260 msgid  "abc%p"
261 msgstr "xyz%T"
262 # Invalid: type incompatibility
263 msgid  "abc%p"
264 msgstr "xyz%A"
265 # Invalid: type incompatibility
266 msgid  "abc%p"
267 msgstr "xyz%C"
268 # Invalid: type incompatibility
269 msgid  "abc%p"
270 msgstr "xyz%E"
271 # Invalid: type incompatibility
272 msgid  "abc%p"
273 msgstr "xyz%L"
274 # Invalid: type incompatibility
275 msgid  "abc%p"
276 msgstr "xyz%O"
277 # Invalid: type incompatibility
278 msgid  "abc%p"
279 msgstr "xyz%P"
280 # Invalid: type incompatibility
281 msgid  "abc%p"
282 msgstr "xyz%Q"
283 # Invalid: type incompatibility
284 msgid  "abc%p"
285 msgstr "xyz%V"
286 # Invalid: type incompatibility
287 msgid  "abc%H"
288 msgstr "xyz%D"
289 # Invalid: type incompatibility
290 msgid  "abc%H"
291 msgstr "xyz%F"
292 # Invalid: type incompatibility
293 msgid  "abc%H"
294 msgstr "xyz%T"
295 # Invalid: type incompatibility
296 msgid  "abc%H"
297 msgstr "xyz%A"
298 # Invalid: type incompatibility
299 msgid  "abc%H"
300 msgstr "xyz%C"
301 # Invalid: type incompatibility
302 msgid  "abc%H"
303 msgstr "xyz%E"
304 # Invalid: type incompatibility
305 msgid  "abc%H"
306 msgstr "xyz%L"
307 # Invalid: type incompatibility
308 msgid  "abc%H"
309 msgstr "xyz%O"
310 # Invalid: type incompatibility
311 msgid  "abc%H"
312 msgstr "xyz%P"
313 # Invalid: type incompatibility
314 msgid  "abc%H"
315 msgstr "xyz%Q"
316 # Invalid: type incompatibility
317 msgid  "abc%H"
318 msgstr "xyz%V"
319 # Invalid: type incompatibility
320 msgid  "abc%D"
321 msgstr "xyz%F"
322 # Invalid: type incompatibility
323 msgid  "abc%D"
324 msgstr "xyz%T"
325 # Invalid: type incompatibility
326 msgid  "abc%D"
327 msgstr "xyz%A"
328 # Invalid: type incompatibility
329 msgid  "abc%D"
330 msgstr "xyz%C"
331 # Invalid: type incompatibility
332 msgid  "abc%D"
333 msgstr "xyz%E"
334 # Invalid: type incompatibility
335 msgid  "abc%D"
336 msgstr "xyz%L"
337 # Invalid: type incompatibility
338 msgid  "abc%D"
339 msgstr "xyz%O"
340 # Invalid: type incompatibility
341 msgid  "abc%D"
342 msgstr "xyz%P"
343 # Invalid: type incompatibility
344 msgid  "abc%D"
345 msgstr "xyz%Q"
346 # Invalid: type incompatibility
347 msgid  "abc%D"
348 msgstr "xyz%V"
349 # Invalid: type incompatibility
350 msgid  "abc%F"
351 msgstr "xyz%T"
352 # Invalid: type incompatibility
353 msgid  "abc%F"
354 msgstr "xyz%A"
355 # Invalid: type incompatibility
356 msgid  "abc%F"
357 msgstr "xyz%C"
358 # Invalid: type incompatibility
359 msgid  "abc%F"
360 msgstr "xyz%E"
361 # Invalid: type incompatibility
362 msgid  "abc%F"
363 msgstr "xyz%L"
364 # Invalid: type incompatibility
365 msgid  "abc%F"
366 msgstr "xyz%O"
367 # Invalid: type incompatibility
368 msgid  "abc%F"
369 msgstr "xyz%P"
370 # Invalid: type incompatibility
371 msgid  "abc%F"
372 msgstr "xyz%Q"
373 # Invalid: type incompatibility
374 msgid  "abc%F"
375 msgstr "xyz%V"
376 # Invalid: type incompatibility
377 msgid  "abc%T"
378 msgstr "xyz%A"
379 # Invalid: type incompatibility
380 msgid  "abc%T"
381 msgstr "xyz%C"
382 # Invalid: type incompatibility
383 msgid  "abc%T"
384 msgstr "xyz%E"
385 # Invalid: type incompatibility
386 msgid  "abc%T"
387 msgstr "xyz%L"
388 # Invalid: type incompatibility
389 msgid  "abc%T"
390 msgstr "xyz%O"
391 # Invalid: type incompatibility
392 msgid  "abc%T"
393 msgstr "xyz%P"
394 # Invalid: type incompatibility
395 msgid  "abc%T"
396 msgstr "xyz%Q"
397 # Invalid: type incompatibility
398 msgid  "abc%T"
399 msgstr "xyz%V"
400 # Invalid: type incompatibility
401 msgid  "abc%A"
402 msgstr "xyz%C"
403 # Invalid: type incompatibility
404 msgid  "abc%A"
405 msgstr "xyz%E"
406 # Invalid: type incompatibility
407 msgid  "abc%A"
408 msgstr "xyz%L"
409 # Invalid: type incompatibility
410 msgid  "abc%A"
411 msgstr "xyz%O"
412 # Invalid: type incompatibility
413 msgid  "abc%A"
414 msgstr "xyz%P"
415 # Invalid: type incompatibility
416 msgid  "abc%A"
417 msgstr "xyz%Q"
418 # Invalid: type incompatibility
419 msgid  "abc%A"
420 msgstr "xyz%V"
421 # Invalid: type incompatibility
422 msgid  "abc%C"
423 msgstr "xyz%E"
424 # Invalid: type incompatibility
425 msgid  "abc%C"
426 msgstr "xyz%L"
427 # Invalid: type incompatibility
428 msgid  "abc%C"
429 msgstr "xyz%O"
430 # Invalid: type incompatibility
431 msgid  "abc%C"
432 msgstr "xyz%P"
433 # Invalid: type incompatibility
434 msgid  "abc%C"
435 msgstr "xyz%Q"
436 # Invalid: type incompatibility
437 msgid  "abc%C"
438 msgstr "xyz%V"
439 # Invalid: type incompatibility
440 msgid  "abc%E"
441 msgstr "xyz%L"
442 # Invalid: type incompatibility
443 msgid  "abc%E"
444 msgstr "xyz%O"
445 # Invalid: type incompatibility
446 msgid  "abc%E"
447 msgstr "xyz%P"
448 # Invalid: type incompatibility
449 msgid  "abc%E"
450 msgstr "xyz%Q"
451 # Invalid: type incompatibility
452 msgid  "abc%E"
453 msgstr "xyz%V"
454 # Invalid: type incompatibility
455 msgid  "abc%L"
456 msgstr "xyz%O"
457 # Invalid: type incompatibility
458 msgid  "abc%L"
459 msgstr "xyz%P"
460 # Invalid: type incompatibility
461 msgid  "abc%L"
462 msgstr "xyz%Q"
463 # Invalid: type incompatibility
464 msgid  "abc%L"
465 msgstr "xyz%V"
466 # Invalid: type incompatibility
467 msgid  "abc%O"
468 msgstr "xyz%P"
469 # Invalid: type incompatibility
470 msgid  "abc%O"
471 msgstr "xyz%Q"
472 # Invalid: type incompatibility
473 msgid  "abc%O"
474 msgstr "xyz%V"
475 # Invalid: type incompatibility
476 msgid  "abc%P"
477 msgstr "xyz%Q"
478 # Invalid: type incompatibility
479 msgid  "abc%P"
480 msgstr "xyz%V"
481 # Invalid: type incompatibility
482 msgid  "abc%Q"
483 msgstr "xyz%V"
484 # Invalid: type incompatibility due to size
485 msgid  "abc%i"
486 msgstr "xyz%li"
487 # Invalid: type incompatibility due to size
488 msgid  "abc%i"
489 msgstr "xyz%lli"
490 # Invalid: type incompatibility due to size
491 msgid  "abc%i"
492 msgstr "xyz%wi"
493 # Invalid: type incompatibility due to size
494 msgid  "abc%li"
495 msgstr "xyz%lli"
496 # Invalid: type incompatibility due to size
497 msgid  "abc%li"
498 msgstr "xyz%wi"
499 # Invalid: type incompatibility due to size
500 msgid  "abc%lli"
501 msgstr "xyz%wi"
502 # Invalid: type incompatibility for width
503 msgid  "abc%.*s"
504 msgstr "xyz%u%s"
505 EOF
506
507 : ${MSGFMT=msgfmt}
508 n=0
509 while read comment; do
510   read msgid_line
511   read msgstr_line
512   n=`expr $n + 1`
513   tmpfiles="$tmpfiles f-gi-2-$n.po f-gi-2-$n.mo"
514   cat <<EOF > f-gi-2-$n.po
515 #, gcc-internal-format
516 ${msgid_line}
517 ${msgstr_line}
518 EOF
519   fail=
520   if echo "$comment" | grep 'Valid:' > /dev/null; then
521     if ${MSGFMT} --check-format -o f-gi-2-$n.mo f-gi-2-$n.po; then
522       :
523     else
524       fail=yes
525     fi
526   else
527     ${MSGFMT} --check-format -o f-gi-2-$n.mo f-gi-2-$n.po 2> /dev/null
528     if test $? = 1; then
529       :
530     else
531       fail=yes
532     fi
533   fi
534   if test -n "$fail"; then
535     echo "Format string checking error:" 1>&2
536     cat f-gi-2-$n.po 1>&2
537     exit 1
538   fi
539   rm -f f-gi-2-$n.po f-gi-2-$n.mo
540 done < f-gi-2.data
541
542 rm -fr $tmpfiles
543
544 exit 0