msgcomm-26 msgcomm-27 msgcomm-28 \
msgconv-1 msgconv-2 msgconv-3 msgconv-4 msgconv-5 msgconv-6 msgconv-7 \
msgen-1 msgen-2 msgen-3 msgen-4 \
- msgexec-1 msgexec-2 msgexec-3 msgexec-4 \
+ msgexec-1 msgexec-2 msgexec-3 msgexec-4 msgexec-5 \
msgfilter-1 msgfilter-2 msgfilter-3 msgfilter-4 msgfilter-5 \
msgfilter-sr-latin-1 msgfilter-quote-1 \
msgfmt-1 msgfmt-2 msgfmt-3 msgfmt-4 msgfmt-5 msgfmt-6 msgfmt-7 \
--- /dev/null
+#! /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 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
+---
+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:14 =========================
+a piece of cake
+%d pieces of cake
+0
+---
+un morceau de gateau
+========================= mex-test5.po:14 =========================
+a piece of cake
+%d pieces of cake
+1
+---
+%d morceaux de gateau
+========================= mex-test5.po:20 =========================
+%s is replaced by %s.
+
+
+---
+%2$s remplace %1$s.
+EOF
+
+: ${DIFF=diff}
+${DIFF} mex-test5.ok mex-test5.out
+result=$?
+
+exit $result