Mercurial > hg > octave-nkf > gnulib-hg
changeset 2648:57c481bfbeb3
If the compile-test says
strerror_r doesn't work, then resort to a `run'-test that works on
BeOS and segfaults on DEC Unix.
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Sat, 24 Jun 2000 21:04:44 +0000 |
parents | 172cd4779132 |
children | 6bbe30a7c6f5 |
files | m4/strerror_r.m4 |
diffstat | 1 files changed, 29 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/m4/strerror_r.m4 +++ b/m4/strerror_r.m4 @@ -1,5 +1,7 @@ #serial 1000 # Experimental replacement for the function in the latest CVS autoconf. +# If the compile-test says strerror_r doesn't work, then resort to a +# `run'-test that works on BeOS and segfaults on DEC Unix. # Use with the error.c file in ../lib. undefine([AC_FUNC_STRERROR_R]) @@ -21,12 +23,6 @@ # if HAVE_STRING_H # include <string.h> # endif -#ifndef HAVE_DECL_STRERROR_R -"this configure-time declaration test was not run" -#endif -#if !HAVE_DECL_STRERROR_R -char *strerror_r (); -#endif ], [ char buf; @@ -35,6 +31,33 @@ ac_cv_func_strerror_r_works=yes, ac_cv_func_strerror_r_works=no ) + if test $ac_cv_func_strerror_r_works = no; then + # strerror_r seems not to work, but now we have to choose between + # systems that have relatively inaccessible declarations for the + # function. BeOS and DEC UNIX 4.0 fall in this category, but the + # former has a strerror_r that returns char*, while the latter + # has a strerror_r that returns `int'. + # This test should segfault on the DEC system. + AC_TRY_RUN( + [ +# include <stdio.h> +# include <string.h> + + extern char *strerror_r (); + + int + main () + { + char buf[2]; + char x = *strerror_r (0, buf, sizeof buf); + exit (x && !isalpha (x)); + } + ], + ac_cv_func_strerror_r_works=yes, + ac_cv_func_strerror_r_works=no, + ac_cv_func_strerror_r_works=no) + fi + if test $ac_cv_func_strerror_r_works = yes; then AC_DEFINE_UNQUOTED(HAVE_WORKING_STRERROR_R, 1, [Define to 1 if `strerror_r' returns a string.])