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