summaryrefslogtreecommitdiffstats
path: root/m4/strerror_r.m4
diff options
context:
space:
mode:
authorClaudio Fontana <sick_soul@users.sourceforge.net>2005-11-01 09:27:17 +0000
committerClaudio Fontana <sick_soul@users.sourceforge.net>2005-11-01 09:27:17 +0000
commitc12afffc3d06c2acfc5fab3aa4746d1096f4950a (patch)
tree7af089dbe424fa5639f8aeba7250e8000f613278 /m4/strerror_r.m4
parent87b1fbbc4ad8a95bfe27a91bc6672d7fcb9e0fe8 (diff)
downloadidutils-c12afffc3d06c2acfc5fab3aa4746d1096f4950a.tar.gz
idutils-c12afffc3d06c2acfc5fab3aa4746d1096f4950a.tar.bz2
idutils-c12afffc3d06c2acfc5fab3aa4746d1096f4950a.zip
* new gnulib m4 macros
Diffstat (limited to 'm4/strerror_r.m4')
-rw-r--r--m4/strerror_r.m449
1 files changed, 49 insertions, 0 deletions
diff --git a/m4/strerror_r.m4 b/m4/strerror_r.m4
new file mode 100644
index 0000000..28924b1
--- /dev/null
+++ b/m4/strerror_r.m4
@@ -0,0 +1,49 @@
+#serial 1004
+# This file is not needed if you can assume Autoconf 2.54 or later.
+# Experimental replacement for the function in the latest CVS autoconf.
+# Use with the error.c file in ../lib.
+
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+undefine([AC_FUNC_STRERROR_R])
+
+# AC_FUNC_STRERROR_R
+# ------------------
+AC_DEFUN([AC_FUNC_STRERROR_R],
+[AC_CHECK_DECLS([strerror_r])
+AC_CHECK_FUNCS([strerror_r])
+AC_CACHE_CHECK([whether strerror_r returns char *],
+ ac_cv_func_strerror_r_char_p,
+ [
+ ac_cv_func_strerror_r_char_p=no
+ if test $ac_cv_have_decl_strerror_r = yes; then
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
+ [[
+ char buf[100];
+ char x = *strerror_r (0, buf, sizeof buf);
+ char *p = strerror_r (0, buf, sizeof buf);
+ ]])],
+ ac_cv_func_strerror_r_char_p=yes)
+ else
+ # strerror_r is not declared. 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_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
+ extern char *strerror_r ();],
+ [[char buf[100];
+ char x = *strerror_r (0, buf, sizeof buf);
+ exit (!isalpha (x));]])],
+ ac_cv_func_strerror_r_char_p=yes, , :)
+ fi
+ ])
+if test $ac_cv_func_strerror_r_char_p = yes; then
+ AC_DEFINE([STRERROR_R_CHAR_P], 1,
+ [Define to 1 if strerror_r returns char *.])
+fi
+])# AC_FUNC_STRERROR_R