Ondřej Vašík <ova...@redhat.com> writes:

> as reported in https://bugzilla.redhat.com/show_bug.cgi?id=525134 by
> Daniel Qarras, ls -l shows iso long format for en_* locales.

I just now read that Bugzilla report, and the diagnosis and the
patch do not seem correct.  The diagnosis says:

> In ls.c (case locale_time_style)  is dcgettext (NULL, long_time_format[i],
> LC_TIME); ... that translates the string, but the translation is THE SAME as
> the default - as the format is the same for en_* locales.

But that is not what the ls.c source code does.  The code does this:

                    char const *locale_format =
                      dcgettext (NULL, long_time_format[i], LC_TIME);
                    if (locale_format == long_time_format[i])
                      goto case_long_iso_time_style;

The "==" test returns true when dcgettext returns the msgid (its 2nd
argument) because it finds no translation.  If it found a translation,
dcgettext would return a different string, so the "==" test would
return false, and the code would use the translation.  Even if the
translation has the same _contents_ as the msgid, it will have a
different _address_, so the code is correct as-is and does not need
this modification.

Also, the proposed patch would use U.S. styles for all English
locales, which certainly is not right.

I suspect the diagnosis given by Jim Meyering in comment #3 at that
bug report is correct, and that something is going wrong at install
time.


Reply via email to