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

# Test msgfilter on a PO file with contexts.

if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
    ac_n= ac_c='
' ac_t='        '
  else
    ac_n=-n ac_c= ac_t=
  fi
else
  ac_n= ac_c='\c' ac_t=
fi

# Some sed programs (Solaris etc.) omit the last line if it ended without
# a newline. We must skip this test when we encounter such a broken sed.
sedoutput=`echo $ac_n "abc$ac_c" | sed -e s/x/x/`
test -n "$sedoutput" || {
  echo "Skipping test: sed program is broken"
  Exit 77
}

# Some sed programs (IRIX, OSF/1 etc.) add a newline to the last line if it
# doesn't end with a newline.
sedoutputcount=`echo $ac_n "abc$ac_c" | sed -e s/x/x/ | wc -c`
sedoutputcount=`echo "$sedoutputcount" | sed -e 's/[ 	]//g'`
test "$sedoutputcount" = 3 || {
  echo "Skipping test: sed program inserts extra newline"
  Exit 77
}

cat <<\EOF > mfi-test4.po
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#. A menu item
msgctxt "File|"
msgid "Open"
msgstr "Ouvrir"

#. A menu item
msgctxt "File|"
msgid "New"
msgstr "Nouveau"

#. Denote a lock's state
msgctxt "Lock state"
msgid "Open"
msgstr "Ouvert"

#. Denote a lock's state
msgctxt "Lock state"
msgid "Closed"
msgstr "Fermé"

#. A product
msgctxt "Audi"
msgid "car"
msgstr "voiture"

#. A product
msgctxt "Océ"
msgid "copier"
msgstr "photocopieur"

#~ msgid "Save As"
#~ msgstr "Enregistrer l'as"

#. A menu item
#~ msgctxt "File|"
#~ msgid "Save As"
#~ msgstr "Enregistrer sous"
EOF

: ${MSGFILTER=msgfilter}
sedexpr1='1{
s/^/\[\[/
}'
sedexpr2='${
s/$/\]\]/
}'
LC_ALL=C \
${MSGFILTER} -i mfi-test4.po -o mfi-test4.out sed -e "$sedexpr1" -e "$sedexpr2" >mfi-test4.err 2>&1
result=$?
cat mfi-test4.err | grep -v 'warning: Locale charset' | grep -v '^ '
test $result = 0 || { Exit 1; }

cat <<\EOF > mfi-test4.ok
msgid ""
msgstr ""
"[[Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit]]\n"

#. A menu item
msgctxt "File|"
msgid "Open"
msgstr "[[Ouvrir]]"

#. A menu item
msgctxt "File|"
msgid "New"
msgstr "[[Nouveau]]"

#. Denote a lock's state
msgctxt "Lock state"
msgid "Open"
msgstr "[[Ouvert]]"

#. Denote a lock's state
msgctxt "Lock state"
msgid "Closed"
msgstr "[[Fermé]]"

#. A product
msgctxt "Audi"
msgid "car"
msgstr "[[voiture]]"

#. A product
msgctxt "Océ"
msgid "copier"
msgstr "[[photocopieur]]"

#~ msgid "Save As"
#~ msgstr "[[Enregistrer l'as]]"

#. A menu item
#~ msgctxt "File|"
#~ msgid "Save As"
#~ msgstr "[[Enregistrer sous]]"
EOF

: ${DIFF=diff}
${DIFF} mfi-test4.ok mfi-test4.out
result=$?

exit $result
