#! /bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src

# Test whether the right number of arguments are extracted.

cat <<\EOPERL > xg-pl-6.pl
use strict;

# For 'gettext', xgettext needs to extract the first argument.

# Don't extract further strings (second argument to gettext or unrelated
# expressions).
print gettext "extracted1", "$shouldnotbeextracted";
print gettext ("extracted2"), "$shouldnotbeextracted";
print gettext ("extracted3")."$notextracted", "$shouldnotbeextracted";
print (gettext ("extracted4")), "$shouldnotbeextracted";

# Likewise, inside a call to an arbitrary 'foobar' function.
print foobar gettext "extracted5", "$shouldnotbeextracted";
print foobar gettext ("extracted6"), "$shouldnotbeextracted";
print foobar gettext ("extracted7")."$notextracted", "$shouldnotbeextracted";
print foobar (gettext ("extracted8")), "$shouldnotbeextracted";
print foobar (gettext "extracted9", "$shouldnotbeextracted");
print foobar (gettext ("extracted10"), "$shouldnotbeextracted");
print foobar (gettext ("extracted11")."$notextracted", "$shouldnotbeextracted");

# Don't extract strings that are inside a function call to an arbitrary
# 'foobar' function, and don't extract a second argument to gettext
print gettext foobar "$notextracted", "$shouldnotbeextracted";
print gettext foobar ("$notextracted"), "$shouldnotbeextracted";
print gettext foobar ("$notextracted")."$notextracted", "$shouldnotbeextracted";
print (gettext foobar ("$notextracted")), "$shouldnotbeextracted";
print gettext (foobar "$notextracted"), "$shouldnotbeextracted";
print gettext (foobar ("$notextracted")), "$shouldnotbeextracted";
print gettext (foobar ("$notextracted"))."$notextracted", "$shouldnotbeextracted";
print gettext (foobar ("$notextracted")."$notextracted"), "$shouldnotbeextracted";
print (gettext (foobar ("$notextracted"))), "$shouldnotbeextracted";

# For 'dgettext', xgettext needs to extract the second argument.

# The first argument should not be extracted.
print dgettext "$shouldnotbeextracted", "extracted12";

# For a built-in unary function with parentheses, it's clear where dgettext's
# first argument ends.
print dgettext sin (17), "extracted13";

# For a built-in unary function, it's clear where dgettext's first argument
# ends.
print dgettext sin 17, "extracted14";

# For a function call with parentheses, it's clear where dgettext's first
# argument ends.
print dgettext foo (17), "extracted15";

# This one is hairy. If foo is a function with a prototype and one argument,
# this parses like
#   print dgettext (foo (17), "extracted16");
# otherwise it parses like
#   print dgettext (foo (17, "extracted16"));
# But in the latter case dgettext has no second argument at all; this is
# therefore not the interpretation intended by the programmer.
print dgettext foo 17, "extracted16";
EOPERL

: ${XGETTEXT=xgettext}
LC_MESSAGES=C LC_ALL= \
${XGETTEXT} --omit-header --no-location -o xg-pl-6.tmp xg-pl-6.pl || Exit 1
LC_ALL=C tr -d '\r' < xg-pl-6.tmp > xg-pl-6.pot || Exit 1

cat <<\EOF > xg-pl-6.ok
msgid "extracted1"
msgstr ""

msgid "extracted2"
msgstr ""

msgid "extracted3"
msgstr ""

msgid "extracted4"
msgstr ""

msgid "extracted5"
msgstr ""

msgid "extracted6"
msgstr ""

msgid "extracted7"
msgstr ""

msgid "extracted8"
msgstr ""

msgid "extracted9"
msgstr ""

msgid "extracted10"
msgstr ""

msgid "extracted11"
msgstr ""

msgid "extracted12"
msgstr ""

msgid "extracted13"
msgstr ""

msgid "extracted14"
msgstr ""

msgid "extracted15"
msgstr ""

msgid "extracted16"
msgstr ""
EOF

: ${DIFF=diff}
${DIFF} xg-pl-6.ok xg-pl-6.pot
result=$?

exit $result
