On 02/12/2013 14:40, Trần Ngọc Quân wrote:
> On 02/12/2013 12:57, Duy Nguyen wrote:
>>> I suggest use C preprocessor instead. The person who complete git (make
>>> debian, rpm etc. package) decide enable it or not (disable by default).
>>> Most of people use git from distribution instead of complete it from source.
>>>
>>> #ifndef VSNPRINTF_OK
>>> setlocale(LC_CTYPE, "C");
>>> #endif
>>>
>> A single vsnprintf is cheap enough that I would not worry about
>> performance impact. Given a choice between this and distro
>> maintainers, some of them do check release notes, some not so much,
>> I'd rather go with this.
> We can set this macro automatically by using autoconf.
> Add following code in configure.ac
>
>
> AC_LANG_CONFTEST(
> [AC_LANG_PROGRAM([[
> #include <stdio.h>
> #include <locale.h>
> #include <gnu/libc-version.h>
>
> #define STR "David_K\345gedal"
> ]],[[
> char buf[20];
> setlocale(LC_ALL, "en_US.UTF-8");
> if (snprintf(buf, 13, "%.13s", STR) < 0){
> printf("0");
> }else{
> printf("1");
> }
> ]])])
> gcc -o conftest conftest.c
> AC_DEFINE([VSNPRINTF_OK], [m4_esyscmd([./conftest])], [Enable l10n libc
> if vnsprintf OK])
>
> You can change c code here!
>
Sorry I'm wrong, m4_esyscmd don't work as I spect
Change to:
AC_LANG_CONFTEST(
[AC_LANG_PROGRAM([[
#include <stdio.h>
#include <locale.h>
#include <gnu/libc-version.h>
#define STR "David_K\345gedal"
]],[[
char buf[20];
setlocale(LC_CTYPE, "en_US.UTF-8");
if (snprintf(buf, 13, "%.13s", STR) < 0){
printf("0");
}else{
printf("1");
}
]])])
gcc -o conftest conftest.c
VSNPRINTF=$(./conftest)
AC_DEFINE_UNQUOTED([VSNPRINTF_OK], [ $VSNPRINTF ], [Enable libc if
vnsprintf OK])
don't missing run this:
$ autoconf && autoheader
My os (ubuntu 12.04) don't pass this test (libc6:i386 2.15-0ubuntu)
$ grep VSNPRINTF_OK config.h
#define VSNPRINTF_OK 0
--
Trần Ngọc Quân.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html