This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: libc-2.25.90.pot
On 19/07/2017 04:33, Benno Schulenberg wrote:
> Op 19-07-2017 om 09:15 schreef Siddhesh Poyarekar:
>> On Wednesday 19 July 2017 12:32 AM, Adhemerval Zanella wrote:
>>>
>>> And 'PRIdLINENO' is defined as
>>>
>>> 50 typedef intmax_t lineno;
>>> 51 #define PRIdLINENO PRIdMAX
>>>
>>> Which means we will get different string encodings depending of how
>>> __PRI64_PREFIX is defined by the ABI.
>>>
>>> Both changes came from '92bd70fb' (Update timezone code from tzcode 2017b.) and
>>> from original tz project it seems to get from cc8aec6ecb1ecc (zic: some
>>> integer-width fixups). TZ commit log seems to indicate this is just a integer
>>> cleanup without original from an actual bug or limitation.
>>>
>>> Paul I think we can use default %d for ints for these two specific printf to
>>> make translation work as intended. What do you think?
>>
>> There are three of those instances and they refer to line numbers in the
>> timezone data file. If we can assume that the tzdata files are sane
>> then I suppose we could assume %d for these.
>
> Or at least change them to something that xgettext recognizes. There are
> several instances of %<PRIuMAX> and %<PRIu64> in the POT file, so xgettext
> is able to recognize some of those "PRI..." strings, but seemingly not
> custom-defined ones?
I think for glibc, since we support C99 intmax_t printf format, we can
just use %jd instead:
* timezone/zic.c (PRIdLINENO): Remove macro.
(verror): Use %jd instead of PRIdLINENO.
---
ChangeLog | 5 +++++
timezone/zic.c | 7 +++----
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/timezone/zic.c b/timezone/zic.c
index 068fb43..aaef06b 100644
--- a/timezone/zic.c
+++ b/timezone/zic.c
@@ -48,7 +48,6 @@ static ptrdiff_t const PTRDIFF_MAX = MAXVAL(ptrdiff_t, TYPE_BIT(ptrdiff_t));
/* The type and printf format for line numbers. */
typedef intmax_t lineno;
-#define PRIdLINENO PRIdMAX
struct rule {
const char * r_filename;
@@ -484,10 +483,10 @@ verror(const char *const string, va_list args)
** on BSD systems.
*/
if (filename)
- fprintf(stderr, _("\"%s\", line %"PRIdLINENO": "), filename, linenum);
+ fprintf(stderr, _("\"%s\", line %jd: "), filename, linenum);
vfprintf(stderr, string, args);
if (rfilename != NULL)
- fprintf(stderr, _(" (rule from \"%s\", line %"PRIdLINENO")"),
+ fprintf(stderr, _(" (rule from \"%s\", line %jd)"),
rfilename, rlinenum);
fprintf(stderr, "\n");
}
@@ -1250,7 +1249,7 @@ _("\"Zone %s\" line and -p option are mutually exclusive"),
if (zones[i].z_name != NULL &&
strcmp(zones[i].z_name, fields[ZF_NAME]) == 0) {
error(_("duplicate zone name %s"
- " (file \"%s\", line %"PRIdLINENO")"),
+ " (file \"%s\", line %jd)"),
fields[ZF_NAME],
zones[i].z_filename,
zones[i].z_linenum);
--