Tests for module 'get-rusage-data'.
[gnulib.git] / m4 / wcsrtombs.m4
index e4f39a7..ec767de 100644 (file)
@@ -1,5 +1,5 @@
-# wcsrtombs.m4 serial 4
-dnl Copyright (C) 2008-2010 Free Software Foundation, Inc.
+# wcsrtombs.m4 serial 7
+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.
@@ -10,28 +10,29 @@ AC_DEFUN([gl_FUNC_WCSRTOMBS],
 
   AC_REQUIRE([AC_TYPE_MBSTATE_T])
   gl_MBSTATE_T_BROKEN
-  if test $REPLACE_MBSTATE_T = 1; then
-    REPLACE_WCSRTOMBS=1
-  fi
+
   AC_CHECK_FUNCS_ONCE([wcsrtombs])
   if test $ac_cv_func_wcsrtombs = no; then
     HAVE_WCSRTOMBS=0
-  fi
-  if test $HAVE_WCSRTOMBS != 0 && test $REPLACE_WCSRTOMBS != 1; then
-    gl_WCSRTOMBS_TERMINATION
-    gl_WCSRTOMBS_NULL
-    case "$gl_cv_func_wcsrtombs_termination" in
-      *yes) ;;
-      *) AC_DEFINE([WCSRTOMBS_TERMINATION_BUG], [1],
-           [Define if the wcsrtombs function may set the source pointer to NULL without NUL-terminating the destination.])
-         REPLACE_WCSRTOMBS=1 ;;
-    esac
-    case "$gl_cv_func_wcsrtombs_null" in
-      *yes) ;;
-      *) AC_DEFINE([WCSRTOMBS_NULL_ARG_BUG], [1],
-           [Define if the wcsrtombs function has the NULL destination argument bug.])
-         REPLACE_WCSRTOMBS=1 ;;
-    esac
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_WCSRTOMBS=1
+    else
+      gl_WCSRTOMBS_TERMINATION
+      gl_WCSRTOMBS_NULL
+      case "$gl_cv_func_wcsrtombs_termination" in
+        *yes) ;;
+        *) AC_DEFINE([WCSRTOMBS_TERMINATION_BUG], [1],
+             [Define if the wcsrtombs function may set the source pointer to NULL without NUL-terminating the destination.])
+           REPLACE_WCSRTOMBS=1 ;;
+      esac
+      case "$gl_cv_func_wcsrtombs_null" in
+        *yes) ;;
+        *) AC_DEFINE([WCSRTOMBS_NULL_ARG_BUG], [1],
+             [Define if the wcsrtombs function has the NULL destination argument bug.])
+           REPLACE_WCSRTOMBS=1 ;;
+      esac
+    fi
   fi
   if test $HAVE_WCSRTOMBS = 0 || test $REPLACE_WCSRTOMBS = 1; then
     gl_REPLACE_WCHAR_H
@@ -67,9 +68,17 @@ changequote(,)dnl
       esac
 changequote([,])dnl
       if test $LOCALE_FR != none; then
-        AC_TRY_RUN([
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
 #include <locale.h>
 #include <stdlib.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 ()
 {
@@ -88,7 +97,7 @@ int main ()
         }
     }
   return 0;
-}],
+}]])],
           [gl_cv_func_wcsrtombs_termination=yes],
           [gl_cv_func_wcsrtombs_termination=no],
           [:])
@@ -121,9 +130,17 @@ changequote(,)dnl
       esac
 changequote([,])dnl
       if test $LOCALE_FR != none; then
-        AC_TRY_RUN([
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
 #include <locale.h>
 #include <stdlib.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 ()
 {
@@ -141,7 +158,7 @@ int main ()
         }
     }
   return 0;
-}],
+}]])],
           [gl_cv_func_wcsrtombs_null=yes],
           [gl_cv_func_wcsrtombs_null=no],
           [:])