Re: [PATCH/RFC 07/17] gettext.c: work around us not using setlocale(LC_CTYPE, "")

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 31, 2010 at 15:18, Jonathan Nieder <jrnieder@xxxxxxxxx> wrote:
> Ævar Arnfjörð Bjarmason wrote:
>
>> In 107880a I removed our use of setlocale(LC_CTYPE, "") because of a
>> bug in the GNU C Library [1]
>
> Future readers might benefit from a reminder that it is vsnprintf that
> is broken.

I'll work something in about that.

> Aside, not about this patch: glibc printf can be very convenient for
> translators, because of format strings like "%4$s".  Do other common
> platforms like FreeBSD and Mingw have something similar?

I certainly hope so. I was planning on documenting its usage,
Johannes?

>> --- a/gettext.c
>> +++ b/gettext.c
>> @@ -17,5 +19,9 @@ extern void git_setup_gettext(void) {
>>       }
>>
>>       (void)setlocale(LC_MESSAGES, "");
>> +     (void)setlocale(LC_CTYPE, "");
>> +     charset = nl_langinfo(CODESET);
>> +     (void)bind_textdomain_codeset("git", charset);
>> +     (void)setlocale(LC_CTYPE, "C");
>
> For the curious: we cannot use
>
>        setlocale(LC_CTYPE, "");
>        charset = nl_langinfo(CODESET);
>        setlocale(LC_CTYPE, "C");
>        bind_textdomain_codeset("git", charset);
>
> because nl_langinfo returns a pointer to a static buffer that might
> be wiped out by setlocale() iirc.

But I'm hopefully sidestepping that issue by passing it to
bind_textdomain_codeset() right away.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]