提交 7dc8a65c 编写于 作者: J Junio C Hamano

Merge branch 'nd/gettext-vsnprintf'

* nd/gettext-vsnprintf:
  gettext.c: detect the vsnprintf bug at runtime
...@@ -29,6 +29,17 @@ int use_gettext_poison(void) ...@@ -29,6 +29,17 @@ int use_gettext_poison(void)
#endif #endif
#ifndef NO_GETTEXT #ifndef NO_GETTEXT
static int test_vsnprintf(const char *fmt, ...)
{
char buf[26];
int ret;
va_list ap;
va_start(ap, fmt);
ret = vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
return ret;
}
static const char *charset; static const char *charset;
static void init_gettext_charset(const char *domain) static void init_gettext_charset(const char *domain)
{ {
...@@ -99,9 +110,7 @@ static void init_gettext_charset(const char *domain) ...@@ -99,9 +110,7 @@ static void init_gettext_charset(const char *domain)
$ LANGUAGE= LANG=de_DE.utf8 ./test $ LANGUAGE= LANG=de_DE.utf8 ./test
test: Kein passendes Ger?t gefunden test: Kein passendes Ger?t gefunden
In the long term we should probably see about getting that The vsnprintf bug has been fixed since glibc 2.17.
vsnprintf bug in glibc fixed, and audit our code so it won't
fall apart under a non-C locale.
Then we could simply set LC_CTYPE from the environment, which would Then we could simply set LC_CTYPE from the environment, which would
make things like the external perror(3) messages work. make things like the external perror(3) messages work.
...@@ -115,7 +124,9 @@ static void init_gettext_charset(const char *domain) ...@@ -115,7 +124,9 @@ static void init_gettext_charset(const char *domain)
setlocale(LC_CTYPE, ""); setlocale(LC_CTYPE, "");
charset = locale_charset(); charset = locale_charset();
bind_textdomain_codeset(domain, charset); bind_textdomain_codeset(domain, charset);
setlocale(LC_CTYPE, "C"); /* the string is taken from v0.99.6~1 */
if (test_vsnprintf("%.*s", 13, "David_K\345gedal") < 0)
setlocale(LC_CTYPE, "C");
} }
void git_setup_gettext(void) void git_setup_gettext(void)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册