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