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

# Test basic functionality, duplicate detection, multiple domains.

test -d mf-1 || mkdir mf-1
test -d mf-1/LC_MESSAGES || mkdir mf-1/LC_MESSAGES

cat <<EOF > mf-1-module1.po
#default domain "messages.mo"
msgid	"SYS_(C)\n"
msgstr "MSGFMT(3) portable message object file compiler\n"
"Copyright (C) 1995 Free Software Foundation\n"
"Report bugs to <bug-gnu-utils@gnu.org>\n"
msgid	"msg 1"
msgstr	"msg 1 translation"
#
domain	"help_dom"
msgid	"help 2 %d"
msgstr	"help 2 translation"
#
domain	"error_dom"
msgid	"error 3"
msgstr	"error 3 translation"
EOF

cat <<EOF > mf-1-module2.po
# ---
#default domain "messages.mo"
msgid	"mesg 4"
msgstr	"mesg 4 translation"
#
domain	"error_dom"
msgid	"error 3"
msgstr	"alternate error 3 translation"
msgid	"error 5"
msgstr	"error 5 translation"
#
domain	"window_dom"
msgid	"window 6"
msgstr	"window 6 translation"
EOF

# Without use of msgcat, expect a "duplicate message definition" error.
: ${MSGFMT=msgfmt}
if ${MSGFMT} -o mf-1/LC_MESSAGES/gen.mo mf-1-module1.po mf-1-module2.po 2> /dev/null; then
  Exit 1
fi

# With msgcat, it should work.
: ${MSGCAT=msgcat} ${MSGFMT=msgfmt}
${MSGCAT} --use-first -o mf-1-modules.po mf-1-module1.po mf-1-module2.po || Exit 1
${MSGFMT} -o mf-1/LC_MESSAGES/gen.mo mf-1-modules.po || Exit 1

: ${GETTEXT=gettext}
TEXTDOMAINDIR=. LANGUAGE=mf-1 \
${GETTEXT} --env LC_ALL=en gen 'SYS_(C)
' | LC_ALL=C tr -d '\r' > mf-test1.out

cat <<EOF > gtmf-test1.ok
MSGFMT(3) portable message object file compiler
Copyright (C) 1995 Free Software Foundation
Report bugs to <bug-gnu-utils@gnu.org>
EOF

: ${DIFF=diff}
${DIFF} gtmf-test1.ok mf-test1.out
result=$?

exit $result
