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

# Test msgexec on a PO file with plurals.

cat <<\EOF > mex-test5.po
msgid ""
msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#, c-format
msgid "'Your command, please?', asked the waiter."
msgstr "'Votre commande, s'il vous plait', dit le garcon."

# Les gateaux allemands sont les meilleurs du monde.
#, c-format
#| msgid "a piece of bread"
#| msgid_plural "%d pieces of bread"
msgid "a piece of cake"
msgid_plural "%d pieces of cake"
msgstr[0] "un morceau de gateau"
msgstr[1] "%d morceaux de gateau"

# Reverse the arguments.
#, c-format
msgid "%s is replaced by %s."
msgstr "%2$s remplace %1$s."
EOF

cat <<\EOF > mex-test5.sh
#! /bin/sh
echo "========================= $MSGEXEC_LOCATION =========================" | LC_ALL=C tr -d '\r'
if test -n "${MSGEXEC_MSGCTXT+set}"; then
  echo "context: $MSGEXEC_MSGCTXT" | LC_ALL=C tr -d '\r'
fi
cat <<MEOF
$MSGEXEC_MSGID
$MSGEXEC_MSGID_PLURAL
$MSGEXEC_PLURAL_FORM
$MSGEXEC_PREV_MSGID
$MSGEXEC_PREV_MSGID_PLURAL
---
MEOF
cat
echo | LC_ALL=C tr -d '\r'
exit 0
EOF
chmod a+x mex-test5.sh

: ${MSGEXEC=msgexec}
LC_ALL=C \
${MSGEXEC} -i mex-test5.po ./mex-test5.sh > mex-test5.out 2> mex-test5.err
result=$?
cat mex-test5.err | grep -v 'warning: Locale charset' | grep -v '^ '
test $result = 0 || { Exit 1; }

cat <<\EOF > mex-test5.ok
========================= mex-test5.po:2 =========================





---
Content-Type: text/plain; charset=ASCII
Plural-Forms: nplurals=2; plural=(n > 1);

========================= mex-test5.po:8 =========================
'Your command, please?', asked the waiter.




---
'Votre commande, s'il vous plait', dit le garcon.
========================= mex-test5.po:16 =========================
a piece of cake
%d pieces of cake
0
a piece of bread
%d pieces of bread
---
un morceau de gateau
========================= mex-test5.po:16 =========================
a piece of cake
%d pieces of cake
1
a piece of bread
%d pieces of bread
---
%d morceaux de gateau
========================= mex-test5.po:22 =========================
%s is replaced by %s.




---
%2$s remplace %1$s.
EOF

: ${DIFF=diff}
${DIFF} mex-test5.ok mex-test5.out
result=$?

exit $result
