Revive this file -- to try out an experimental
[gnulib.git] / m4 / strerror_r.m4
1 #serial 1000
2 # Experimental replacement for the function in the latest CVS autoconf.
3 # Use with the error.c file in ../lib.
4
5 undefine([AC_FUNC_STRERROR_R])
6
7 # AC_FUNC_STRERROR_R
8 # ------------------
9 AC_DEFUN([AC_FUNC_STRERROR_R],
10 [# Check strerror_r
11 AC_CHECK_FUNCS([strerror_r])
12 if test $ac_cv_func_strerror_r = yes; then
13   AC_CHECK_HEADERS(string.h)
14   AC_CHECK_DECLS([strerror_r])
15   AC_CACHE_CHECK([for working strerror_r],
16                  ac_cv_func_strerror_r_works,
17    [
18     AC_TRY_COMPILE(
19      [
20 #       include <stdio.h>
21 #       if HAVE_STRING_H
22 #        include <string.h>
23 #       endif
24 #ifndef HAVE_DECL_STRERROR_R
25 "this configure-time declaration test was not run"
26 #endif
27 #if !HAVE_DECL_STRERROR_R
28 char *strerror_r ();
29 #endif
30      ],
31      [
32        char buf;
33        char x = *strerror_r (0, &buf, sizeof buf);
34      ],
35      ac_cv_func_strerror_r_works=yes,
36      ac_cv_func_strerror_r_works=no
37     )
38     if test $ac_cv_func_strerror_r_works = yes; then
39       AC_DEFINE_UNQUOTED(HAVE_WORKING_STRERROR_R, 1,
40         [Define to 1 if `strerror_r' returns a string.])
41     fi
42   ])
43 fi
44 ])# AC_FUNC_STRERROR_R