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

# Test ISO C 99 <inttypes.h> format string directives.

: ${XGETTEXT=xgettext}
${XGETTEXT} -o fc3.tmp --omit-header --no-location "$wabs_srcdir"/format-c-3-prg.c || Exit 1
LC_ALL=C tr -d '\r' < fc3.tmp > fc3.pot || Exit 1

cat <<EOF > fc3.ok
#, c-format
msgid "father of %<PRId8> children"
msgstr ""
EOF

: ${DIFF=diff}
${DIFF} fc3.ok fc3.pot || Exit 1

cat <<EOF > fc3-de.po
#, c-format
msgid "father of %<PRId8> children"
msgstr "Vater von %<PRId8> Kindern"
EOF

test -d fc3-dir || mkdir fc3-dir
test -d fc3-dir/fr || mkdir fc3-dir/fr
test -d fc3-dir/fr/LC_MESSAGES || mkdir fc3-dir/fr/LC_MESSAGES

: ${MSGFMT=msgfmt}
${MSGFMT} -o fc3-dir/fr/LC_MESSAGES/fc3.mo fc3-de.po

: ${MSGUNFMT=msgunfmt}
${MSGUNFMT} -o fc3-de.po.tmp fc3-dir/fr/LC_MESSAGES/fc3.mo || Exit 1
LC_ALL=C tr -d '\r' < fc3-de.po.tmp > fc3-de.po.un || Exit 1

: ${DIFF=diff}
${DIFF} fc3-de.po fc3-de.po.un || Exit 1

if test -z "$USE_SYSTEM_LIBINTL"; then
  # In the tests/ dir: Rely on a fake setlocale, so that we can exercise
  # the test on all platforms.

  LANGUAGE= ../fc3 fr_FR || Exit 1

else
  # In the system-tests/ dir: Don't use a fake setlocale.

  : ${LOCALE_FR=fr_FR}
  : ${LOCALE_FR_UTF8=fr_FR.UTF-8}
  if test $LOCALE_FR != none; then
    prepare_locale_ fc3-dir/fr fc3-dir/$LOCALE_FR
    LANGUAGE= ../fc3 $LOCALE_FR || Exit 1
  fi
  if test $LOCALE_FR_UTF8 != none; then
    prepare_locale_ fc3-dir/fr fc3-dir/$LOCALE_FR_UTF8
    LANGUAGE= ../fc3 $LOCALE_FR_UTF8 || Exit 1
  fi
  if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none; then
    if test -f /usr/bin/localedef; then
      echo "Skipping test: no french locale is installed"
    else
      echo "Skipping test: no french locale is supported"
    fi
    Exit 77
  fi

fi

Exit 0
