]> Dogcows Code - chaz/tar/blobdiff - m4/mbstate_t.m4
(AC_MBSTATE_T_OBJECT): Test for mbstate_t only if the test
[chaz/tar] / m4 / mbstate_t.m4
index aca2df34785223f79c22718c099d8eb649967f44..ac47f11b2504931b91db8c65ddd0184e3b4128d9 100644 (file)
@@ -1,4 +1,4 @@
-# serial 2
+# serial 6
 
 # From Paul Eggert.
 
@@ -6,13 +6,19 @@
 # so you can't declare an object of that type.
 # Check for this incompatibility with Standard C.
 
-# Include stdio.h first, because otherwise this test would fail on Linux
-# (at least 2.2.16) because the `_XOPEN_SOURCE 500' definition elicits
+# Include stdlib.h first, because otherwise this test would fail on Linux
+# (at least glibc-2.1.3) because the `_XOPEN_SOURCE 500' definition elicits
 # a syntax error in wchar.h due to the use of undefined __int32_t.
 
 AC_DEFUN(AC_MBSTATE_T_OBJECT,
-  [AC_CACHE_CHECK([for mbstate_t object type], ac_cv_type_mbstate_t_object,
-    [AC_TRY_COMPILE([#include <stdio.h>
+  [
+   AC_CHECK_HEADERS(stdlib.h)
+
+   AC_CACHE_CHECK([for mbstate_t object], ac_cv_type_mbstate_t_object,
+    [AC_TRY_COMPILE([
+#if HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
 #include <wchar.h>],
       [mbstate_t x; return sizeof x;],
       ac_cv_type_mbstate_t_object=yes,
@@ -20,4 +26,18 @@ AC_DEFUN(AC_MBSTATE_T_OBJECT,
    if test $ac_cv_type_mbstate_t_object = yes; then
      AC_DEFINE(HAVE_MBSTATE_T_OBJECT, 1,
               [Define if mbstate_t is an object type.])
+   else
+     AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t,
+      [AC_TRY_COMPILE([
+#if HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+#include <wchar.h>],
+       [mbstate_t *x; return sizeof x;],
+       ac_cv_type_mbstate_t=yes,
+       ac_cv_type_mbstate_t=no)])
+     if test $ac_cv_type_mbstate_t != yes; then
+       AC_DEFINE(mbstate_t, int,
+                [Define to int if <wchar.h> does not define.])
+     fi
    fi])
This page took 0.023319 seconds and 4 git commands to generate.