threads / discuss / 31634

problem with setlocale trick in gettext.c

Subject: problem with setlocale trick in gettext.c

## tl;dr

2 messages between Sep 24, 2012 and Sep 25, 2012.

replies: 1people: 2as markdown or json

Nguyen Thai Ngoc Duy· Sep 24, 2012, 14:08 UTC · lore
Hi,

I think the setlocale() trick in init_gettext_charset() messes up locale support from library. Currently I get

fatal: Could not switch to '/foo/': Kh?ng c? t?p tin ho?c th? m?c nh? v?y

The question marks are what I actually see. The point here is to call strerrno(), which should return a l10n string. With this patch

diff --git a/gettext.c b/gettext.c
index 71e9545..eeb88c5 100644
--- a/gettext.c
+++ b/gettext.c
@@ -115,7 +115,7 @@ static void init_gettext_charset(const char *domain)
        setlocale(LC_CTYPE, "");
        charset = locale_charset();
        bind_textdomain_codeset(domain, charset);
-       setlocale(LC_CTYPE, "C");
+       //setlocale(LC_CTYPE, "C");
 }

 void git_setup_gettext(void)

I get correct output again

fatal: Could not switch to '/foo/': Không có tập tin hoặc thư mục như vậy

Anybody knows how this happens?
-- 
Duy
Junio C Hamano· Sep 25, 2012, 17:31 UTC · re: Nguyen Thai Ngoc Duy · lore

Re: problem with setlocale trick in gettext.c

Nguyen Thai Ngoc Duy <pclouds@gmail.com> writes:
> I think the setlocale() trick in init_gettext_charset() messes up
> locale support from library. Currently I get
>
> fatal: Could not switch to '/foo/': Kh?ng c? t?p tin ho?c th? m?c nh? v?y

That pretty much matches what the big comment before your patch disables, doesn't it? Could it be that newer/older libc differ in the behaviour around this code?

← back to recent threads