Re: A couple of gripes about the gettext plurals patch - Mailing list pgsql-hackers

From Tom Lane
Subject Re: A couple of gripes about the gettext plurals patch
Date
Msg-id 19025.1243461272@sss.pgh.pa.us
Whole thread Raw
In response to Re: A couple of gripes about the gettext plurals patch  (Peter Eisentraut <peter_e@gmx.net>)
Responses Re: A couple of gripes about the gettext plurals patch  (Peter Eisentraut <peter_e@gmx.net>)
List pgsql-hackers
Peter Eisentraut <peter_e@gmx.net> writes:
> On Tuesday 26 May 2009 21:05:29 Tom Lane wrote:
>> I experimented with this and found that indeed both format strings are
>> checked ... if you have a reasonably recent libintl.h AND you have
>> specified --enable-nls.  Otherwise it all goes to heck, apparently
>> because the compiler doesn't try to look through our substitute
>> definition
>> 
>> #define ngettext(s,p,n) ((n) == 1 ? (s) : (p))

> I can't reproduce that.  Do you have a concrete example?  Different compiler 
> versions, perhaps?

After further experimentation I think I must have gotten confused
yesterday.  gcc 4.3.2 does seem to understand that it should check both
format strings in the ?: construct.  What was not making that check is
the relic 2.95.3 version that I use for trailing-edge compatibility
checking.  However, 2.95.3 appears to handle only one format_arg()
attribute per function, and so the proposed alternative coding doesn't
help it very much either.  Unless there's some intermediate version
that can do two format_arg()s but doesn't look through ?:, it's
probably not worth changing.

So on the whole I withdraw that line of complaint.  But I'm still
not happy, because I've thought of another one ;-)  To wit, the current
coding fails to respect the gettext domain when working with pluralized
messages.
        regards, tom lane


pgsql-hackers by date:

Previous
From: "Larry Silvermintz"
Date:
Subject: Need 8.4 chm.
Next
From: "David E. Wheeler"
Date:
Subject: Re: search_path vs extensions