-# mbsrtowcs.m4 serial 5
-dnl Copyright (C) 2008-2009 Free Software Foundation, Inc.
+# mbsrtowcs.m4 serial 9
+dnl Copyright (C) 2008-2011 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.
AC_REQUIRE([AC_TYPE_MBSTATE_T])
gl_MBSTATE_T_BROKEN
- if test $REPLACE_MBSTATE_T = 1; then
- REPLACE_MBSRTOWCS=1
- fi
+
AC_CHECK_FUNCS_ONCE([mbsrtowcs])
if test $ac_cv_func_mbsrtowcs = no; then
HAVE_MBSRTOWCS=0
- fi
- if test $HAVE_MBSRTOWCS != 0 && test $REPLACE_MBSRTOWCS != 1; then
- gl_MBSRTOWCS_WORKS
- case "$gl_cv_func_mbsrtowcs_works" in
- *yes) ;;
- *) REPLACE_MBSRTOWCS=1 ;;
- esac
+ else
+ if test $REPLACE_MBSTATE_T = 1; then
+ REPLACE_MBSRTOWCS=1
+ else
+ gl_MBSRTOWCS_WORKS
+ case "$gl_cv_func_mbsrtowcs_works" in
+ *yes) ;;
+ *) REPLACE_MBSRTOWCS=1 ;;
+ esac
+ fi
fi
if test $HAVE_MBSRTOWCS = 0 || test $REPLACE_MBSRTOWCS = 1; then
gl_REPLACE_WCHAR_H
esac
changequote([,])dnl
if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
- AC_TRY_RUN([
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
#include <locale.h>
#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
#include <wchar.h>
int main ()
{
+ int result = 0;
/* Test whether the function works when started with a conversion state
in non-initial state. This fails on HP-UX 11.11 and Solaris 10. */
if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
{
const char *src = input + 2;
if (mbsrtowcs (NULL, &src, 10, &state) != 4)
- return 1;
+ result |= 1;
}
}
if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
{
const char *src = input + 4;
if (mbsrtowcs (NULL, &src, 10, &state) != 3)
- return 1;
+ result |= 2;
}
}
if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
{
const char *src = input + 2;
if (mbsrtowcs (NULL, &src, 10, &state) != 4)
- return 1;
+ result |= 4;
}
}
- return 0;
-}],
+ return result;
+}]])],
[gl_cv_func_mbsrtowcs_works=yes],
[gl_cv_func_mbsrtowcs_works=no],
[:])