X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fwctype.m4;h=b611ebbc9b26e43ad901c36aa1b4985453fdf0b3;hb=22d7496bac7d391faff10755b17889ecd2f604d4;hp=9d5fe3ff96e3413cc386d23601063a0b80d16599;hpb=02fbe33cbedc8062f038e4492beca6d149e75ace;p=gnulib.git diff --git a/m4/wctype.m4 b/m4/wctype.m4 index 9d5fe3ff9..b611ebbc9 100644 --- a/m4/wctype.m4 +++ b/m4/wctype.m4 @@ -1,6 +1,8 @@ +# wctype.m4 serial 4 + dnl A placeholder for ISO C99 , for platforms that lack it. -dnl Copyright (C) 2006, 2007 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2009 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -9,28 +11,74 @@ dnl Written by Paul Eggert. AC_DEFUN([gl_WCTYPE_H], [ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) AC_CHECK_FUNCS_ONCE([iswcntrl]) + if test $ac_cv_func_iswcntrl = yes; then + HAVE_ISWCNTRL=1 + else + HAVE_ISWCNTRL=0 + fi + AC_SUBST([HAVE_ISWCNTRL]) AC_CHECK_HEADERS_ONCE([wctype.h]) AC_REQUIRE([AC_C_INLINE]) AC_REQUIRE([gt_TYPE_WINT_T]) + if test $gt_cv_c_wint_t = yes; then + HAVE_WINT_T=1 + else + HAVE_WINT_T=0 + fi AC_SUBST([HAVE_WINT_T]) WCTYPE_H=wctype.h if test $ac_cv_header_wctype_h = yes; then - if test "$ac_cv_func_iswcntrl" = yes; then - WCTYPE_H= + if test $ac_cv_func_iswcntrl = yes; then + dnl Linux libc5 has an iswprint function that returns 0 for all arguments. + dnl The other functions are likely broken in the same way. + AC_CACHE_CHECK([whether iswcntrl works], [gl_cv_func_iswcntrl_works], + [ + AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include + #include + #include + #include + #include + int main () { return iswprint ('x') == 0; }]])], + [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include + #if __GNU_LIBRARY__ == 1 + Linux libc5 i18n is broken. + #endif]], [])], + [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no]) + ]) + ]) + if test $gl_cv_func_iswcntrl_works = yes; then + case "$host_os" in + mingw*) + dnl On mingw, towlower and towupper return random high 16 bits. + ;; + *) + dnl iswcntrl works. towlower and towupper work as well. + WCTYPE_H= + ;; + esac + fi fi - dnl Compute ABSOLUTE_WCTYPE_H even if WCTYPE_H is empty, + dnl Compute NEXT_WCTYPE_H even if WCTYPE_H is empty, dnl for the benefit of builds from non-distclean directories. - gl_ABSOLUTE_HEADER([wctype.h]) - ABSOLUTE_WCTYPE_H=\"$gl_cv_absolute_wctype_h\" + gl_CHECK_NEXT_HEADERS([wctype.h]) HAVE_WCTYPE_H=1 else - ABSOLUTE_WCTYPE_H=\"no/such/file/wctype.h\" HAVE_WCTYPE_H=0 fi - AC_SUBST([ABSOLUTE_WCTYPE_H]) AC_SUBST([HAVE_WCTYPE_H]) AC_SUBST([WCTYPE_H]) + + if test "$gl_cv_func_iswcntrl_works" = no; then + REPLACE_ISWCNTRL=1 + else + REPLACE_ISWCNTRL=0 + fi + AC_SUBST([REPLACE_ISWCNTRL]) ])