1 1.1 christos #! /bin/sh 2 1.1 christos 3 1.1 christos # Test whether the right number of arguments are extracted. 4 1.1 christos 5 1.1 christos tmpfiles="" 6 1.1 christos trap 'rm -fr $tmpfiles' 1 2 3 15 7 1.1 christos 8 1.1 christos tmpfiles="$tmpfiles xg-pl-6.pl" 9 1.1 christos cat <<\EOPERL > xg-pl-6.pl 10 1.1 christos use strict; 11 1.1 christos 12 1.1 christos # For 'gettext', xgettext needs to extract the first argument. 13 1.1 christos 14 1.1 christos # Don't extract further strings (second argument to gettext or unrelated 15 1.1 christos # expressions). 16 1.1 christos print gettext "extracted1", "$shouldnotbeextracted"; 17 1.1 christos print gettext ("extracted2"), "$shouldnotbeextracted"; 18 1.1 christos print gettext ("extracted3")."$notextracted", "$shouldnotbeextracted"; 19 1.1 christos print (gettext ("extracted4")), "$shouldnotbeextracted"; 20 1.1 christos 21 1.1 christos # Likewise, inside a call to an arbitrary 'foobar' function. 22 1.1 christos print foobar gettext "extracted5", "$shouldnotbeextracted"; 23 1.1 christos print foobar gettext ("extracted6"), "$shouldnotbeextracted"; 24 1.1 christos print foobar gettext ("extracted7")."$notextracted", "$shouldnotbeextracted"; 25 1.1 christos print foobar (gettext ("extracted8")), "$shouldnotbeextracted"; 26 1.1 christos print foobar (gettext "extracted9", "$shouldnotbeextracted"); 27 1.1 christos print foobar (gettext ("extracted10"), "$shouldnotbeextracted"); 28 1.1 christos print foobar (gettext ("extracted11")."$notextracted", "$shouldnotbeextracted"); 29 1.1 christos 30 1.1 christos # Don't extract strings that are inside a function call to an arbitrary 31 1.1 christos # 'foobar' function, and don't extract a second argument to gettext 32 1.1 christos print gettext foobar "$notextracted", "$shouldnotbeextracted"; 33 1.1 christos print gettext foobar ("$notextracted"), "$shouldnotbeextracted"; 34 1.1 christos print gettext foobar ("$notextracted")."$notextracted", "$shouldnotbeextracted"; 35 1.1 christos print (gettext foobar ("$notextracted")), "$shouldnotbeextracted"; 36 1.1 christos print gettext (foobar "$notextracted"), "$shouldnotbeextracted"; 37 1.1 christos print gettext (foobar ("$notextracted")), "$shouldnotbeextracted"; 38 1.1 christos print gettext (foobar ("$notextracted"))."$notextracted", "$shouldnotbeextracted"; 39 1.1 christos print gettext (foobar ("$notextracted")."$notextracted"), "$shouldnotbeextracted"; 40 1.1 christos print (gettext (foobar ("$notextracted"))), "$shouldnotbeextracted"; 41 1.1 christos 42 1.1 christos # For 'dgettext', xgettext needs to extract the second argument. 43 1.1 christos 44 1.1 christos # The first argument should not be extracted. 45 1.1 christos print dgettext "$shouldnotbeextracted", "extracted12"; 46 1.1 christos 47 1.1 christos # For a built-in unary function with parentheses, it's clear where dgettext's 48 1.1 christos # first argument ends. 49 1.1 christos print dgettext sin (17), "extracted13"; 50 1.1 christos 51 1.1 christos # For a built-in unary function, it's clear where dgettext's first argument 52 1.1 christos # ends. 53 1.1 christos print dgettext sin 17, "extracted14"; 54 1.1 christos 55 1.1 christos # For a function call with parentheses, it's clear where dgettext's first 56 1.1 christos # argument ends. 57 1.1 christos print dgettext foo (17), "extracted15"; 58 1.1 christos 59 1.1 christos # This one is hairy. If foo is a function with a prototype and one argument, 60 1.1 christos # this parses like 61 1.1 christos # print dgettext (foo (17), "extracted16"); 62 1.1 christos # otherwise it parses like 63 1.1 christos # print dgettext (foo (17, "extracted16")); 64 1.1 christos # But in the latter case dgettext has no second argument at all; this is 65 1.1 christos # therefore not the interpretation intended by the programmer. 66 1.1 christos print dgettext foo 17, "extracted16"; 67 1.1 christos EOPERL 68 1.1 christos 69 1.1 christos tmpfiles="$tmpfiles xg-pl-6.pot" 70 1.1 christos : ${XGETTEXT=xgettext} 71 1.1 christos LC_MESSAGES=C LC_ALL= \ 72 1.1 christos ${XGETTEXT} --omit-header --no-location -o xg-pl-6.pot xg-pl-6.pl 73 1.1 christos test $? = 0 || { rm -fr $tmpfiles; exit 1; } 74 1.1 christos 75 1.1 christos tmpfiles="$tmpfiles xg-pl-6.ok" 76 1.1 christos cat <<\EOF > xg-pl-6.ok 77 1.1 christos msgid "extracted1" 78 1.1 christos msgstr "" 79 1.1 christos 80 1.1 christos msgid "extracted2" 81 1.1 christos msgstr "" 82 1.1 christos 83 1.1 christos msgid "extracted3" 84 1.1 christos msgstr "" 85 1.1 christos 86 1.1 christos msgid "extracted4" 87 1.1 christos msgstr "" 88 1.1 christos 89 1.1 christos msgid "extracted5" 90 1.1 christos msgstr "" 91 1.1 christos 92 1.1 christos msgid "extracted6" 93 1.1 christos msgstr "" 94 1.1 christos 95 1.1 christos msgid "extracted7" 96 1.1 christos msgstr "" 97 1.1 christos 98 1.1 christos msgid "extracted8" 99 1.1 christos msgstr "" 100 1.1 christos 101 1.1 christos msgid "extracted9" 102 1.1 christos msgstr "" 103 1.1 christos 104 1.1 christos msgid "extracted10" 105 1.1 christos msgstr "" 106 1.1 christos 107 1.1 christos msgid "extracted11" 108 1.1 christos msgstr "" 109 1.1 christos 110 1.1 christos msgid "extracted12" 111 1.1 christos msgstr "" 112 1.1 christos 113 1.1 christos msgid "extracted13" 114 1.1 christos msgstr "" 115 1.1 christos 116 1.1 christos msgid "extracted14" 117 1.1 christos msgstr "" 118 1.1 christos 119 1.1 christos msgid "extracted15" 120 1.1 christos msgstr "" 121 1.1 christos 122 1.1 christos msgid "extracted16" 123 1.1 christos msgstr "" 124 1.1 christos EOF 125 1.1 christos 126 1.1 christos : ${DIFF=diff} 127 1.1 christos ${DIFF} xg-pl-6.ok xg-pl-6.pot 128 1.1 christos result=$? 129 1.1 christos 130 1.1 christos rm -fr $tmpfiles 131 1.1 christos 132 1.1 christos exit $result 133