summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2000-01-08 16:30:49 +0000
committerJim Meyering <jim@meyering.net>2000-01-08 16:30:49 +0000
commitdaceb50a3ec9cc2768b4849489cb33cf34fedcaa (patch)
tree682b2e8b2f5a71566e2c9c8b521f1dfb5c9ce3a4
parent8726974cf04d93f3018f7064196e6bf9833660ef (diff)
downloadgnulib-daceb50a3ec9cc2768b4849489cb33cf34fedcaa.tar.gz
(jm_FUNC_STRERROR_R): New file/macro.
-rw-r--r--m4/strerror_r.m439
1 files changed, 39 insertions, 0 deletions
diff --git a/m4/strerror_r.m4 b/m4/strerror_r.m4
new file mode 100644
index 0000000000..e886b5cc5b
--- /dev/null
+++ b/m4/strerror_r.m4
@@ -0,0 +1,39 @@
+#serial 1
+
+dnl From Jim Meyering.
+dnl Determine whether the strerror_r implementation is one of
+dnl the broken ones that returns `int' rather than `char*'.
+dnl Actually, this tests only whether it returns an array,
+dnl but that should be enough.
+dnl This is used by lib/error.c.
+
+AC_DEFUN(jm_FUNC_STRERROR_R,
+[
+ # Check strerror_r
+ AC_CHECK_FUNCS([strerror_r])
+ if test $ac_cv_func_strerror_r = yes; then
+ AC_CHECK_HEADERS(string.h)
+ AC_CACHE_CHECK([for working strerror_r],
+ jm_cv_func_working_strerror_r,
+ [
+ AC_TRY_COMPILE(
+ [
+# include <stdio.h>
+# if HAVE_STRING_H
+# include <string.h>
+# endif
+ ],
+ [
+ int buf; /* avoiding square brackets makes this easier */
+ char x = *strerror_r (0, buf, sizeof buf);
+ ],
+ jm_cv_func_working_strerror_r=yes,
+ jm_cv_func_working_strerror_r=no
+ )
+ if test $jm_cv_func_working_strerror_r = yes; then
+ AC_DEFINE_UNQUOTED(HAVE_WORKING_STRERROR_R, 1,
+ [Define to 1 if strerror_r returns a string.])
+ fi
+ ])
+ fi
+])