eca5567
From 2336451ed68d91ff4b5ae1acbc1eca30e47a86a9 Mon Sep 17 00:00:00 2001
eca5567
From: Bruno Haible <bruno@clisp.org>
eca5567
Date: Sun, 19 May 2019 13:10:06 +0200
eca5567
Subject: [PATCH] msgmerge: Fix behaviour of --for-msgfmt on PO files with no
eca5567
 translations.
eca5567
eca5567
Reported by Don Lawrence <dlawrence@iecok.com>
eca5567
in <https://lists.freedesktop.org/archives/p11-glue/2019-May/000700.html>
eca5567
via Daiki Ueno
eca5567
in <https://lists.gnu.org/archive/html/bug-gettext/2019-05/msg00124.html>.
eca5567
eca5567
* gettext-tools/src/msgmerge.c (main): Treat force_po like true if for_msgfmt
eca5567
is true.
eca5567
* gettext-tools/tests/msgmerge-26: Add test of PO file with no translations.
eca5567
---
eca5567
 gettext-tools/src/msgmerge.c    |  4 ++--
eca5567
 gettext-tools/tests/msgmerge-26 | 36 ++++++++++++++++++++++++++++++---
eca5567
 2 files changed, 35 insertions(+), 5 deletions(-)
eca5567
eca5567
diff --git a/gettext-tools/src/msgmerge.c b/gettext-tools/src/msgmerge.c
eca5567
index cd762c029..92c9b7a8e 100644
eca5567
--- a/gettext-tools/src/msgmerge.c
eca5567
+++ b/gettext-tools/src/msgmerge.c
eca5567
@@ -520,8 +520,8 @@ There is NO WARRANTY, to the extent permitted by law.\n\
eca5567
   else
eca5567
     {
eca5567
       /* Write the merged message list out.  */
eca5567
-      msgdomain_list_print (result, output_file, output_syntax, force_po,
eca5567
-                            false);
eca5567
+      msgdomain_list_print (result, output_file, output_syntax,
eca5567
+                            for_msgfmt || force_po, false);
eca5567
     }
eca5567
 
eca5567
   exit (EXIT_SUCCESS);
eca5567
diff --git a/gettext-tools/tests/msgmerge-26 b/gettext-tools/tests/msgmerge-26
eca5567
index cd3862e33..b86f7a073 100755
eca5567
--- a/gettext-tools/tests/msgmerge-26
eca5567
+++ b/gettext-tools/tests/msgmerge-26
eca5567
@@ -73,7 +73,37 @@ msgstr "Papaya"
eca5567
 EOF
eca5567
 
eca5567
 : ${DIFF=diff}
eca5567
-${DIFF} mm-test26.ok mm-test26.out
eca5567
-result=$?
eca5567
+${DIFF} mm-test26.ok mm-test26.out || Exit 1
eca5567
 
eca5567
-exit $result
eca5567
+# Test with a PO file that has no translated messages.
eca5567
+
eca5567
+cat <<\EOF > mm-test26a.in1
eca5567
+msgid ""
eca5567
+msgstr ""
eca5567
+"Content-Type: text/plain; charset=UTF-8\n"
eca5567
+
eca5567
+msgid "Hello world"
eca5567
+msgstr "Hallo Welt"
eca5567
+EOF
eca5567
+
eca5567
+cat <<\EOF > mm-test26a.in2
eca5567
+msgid ""
eca5567
+msgstr ""
eca5567
+"Content-Type: text/plain; charset=ASCII\n"
eca5567
+
eca5567
+msgid "Hello, world!"
eca5567
+msgstr ""
eca5567
+EOF
eca5567
+
eca5567
+: ${MSGMERGE=msgmerge}
eca5567
+${MSGMERGE} --for-msgfmt -o mm-test26a.tmp mm-test26a.in1 mm-test26a.in2 \
eca5567
+    || Exit 1
eca5567
+LC_ALL=C tr -d '\r' < mm-test26a.tmp > mm-test26a.out || Exit 1
eca5567
+
eca5567
+cat <<\EOF > mm-test26a.ok
eca5567
+msgid ""
eca5567
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
eca5567
+EOF
eca5567
+
eca5567
+: ${DIFF=diff}
eca5567
+${DIFF} mm-test26a.ok mm-test26a.out || Exit 1
eca5567
-- 
eca5567
2.21.0
eca5567