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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html