Bug 110217

Summary: When '-o output-file' or '--output-file=output-file' option is specified, msgfmt(1) doesn't ignore duplicate msgids in the portable object file.
Product: Red Hat Enterprise Linux 3 Reporter: L3support <linux-sid>
Component: gettextAssignee: Leon Ho <llch>
Status: CLOSED NOTABUG QA Contact: Jay Turner <jturner>
Severity: medium Docs Contact:
Priority: medium    
Version: 3.0CC: srevivo
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2004-05-21 06:22:39 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Description L3support 2003-11-17 06:51:04 UTC
Description of problem:
When '-o output-file' or '--output-file=output-file' option is specified, 
msgfmt(1) doesn't ignore duplicate msgids in the portable object file.
According to 'LI18NUX 2000 Globalization Specification', 
when '-o output-file' or '--output-file=output-file' option is specified, 
all domain directives and duplicate msgids in the .po file must be
ignored.

Version-Release number of selected component (if applicable):
0.11.4-7

How reproducible:
always

Steps to Reproduce:
1. $ msgfmt -o test.mo test-msgfmt.po

---
# Portable object file test-msgfmt.po
# 1st one
domain  "first.mo"
msgid   "hello"
msgstr  "hello-first"

# 2nd one
domain  "second.mo"
msgid   "hello"
msgstr  "hello-second"

# 3rd one
domain  "third.mo"
msgid   "hello"
msgstr  "hello-third"
---

Actual results:
$ msgfmt -o test.mo test-msgfmt.po
test-msgfmt.po:11: duplicate message definition
test-msgfmt.po:7: ...this is the location of the first definition
test-msgfmt.po:16: duplicate message definition
test-msgfmt.po:7: ...this is the location of the first definition
msgfmt: found 2 fatal errors


Expected results:
duplicate msgids are ignored. 

Additional info:

Comment 1 Leon Ho 2004-05-21 06:22:39 UTC
Thanks for your report. I have contacted with the upstream and here is
what the gettext upstream maintainer talk about this situation:
"'LI18NUX 2000 Globalization Specification' has evolved into (and been
obsoleted by) the OpenI18N specification 1.3
http://www.openi18n.org/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=53&page=1

It doesn't contain the specification about msgfmt any more, because
this one has been moved to LSB (http://www.linuxbase.org/spec/). LSB
1.3 contains the same text as you say, however the LSB 1.96 has this
instead:
   "If multiple domains or duplicate
    msgids in the .po file are present, the behavior is unspecified."

So I conclude that the LI18NUX 2000 and LSB 1.3 specifications were
too strict on this issue, and the spec was relaxed to follow the
changed behaviour of GNU msgfmt."