summaryrefslogtreecommitdiff
path: root/gnulib-m4/strerror.m4
diff options
context:
space:
mode:
Diffstat (limited to 'gnulib-m4/strerror.m4')
-rw-r--r--gnulib-m4/strerror.m4116
1 files changed, 44 insertions, 72 deletions
diff --git a/gnulib-m4/strerror.m4 b/gnulib-m4/strerror.m4
index 75a17f2..1649b24 100644
--- a/gnulib-m4/strerror.m4
+++ b/gnulib-m4/strerror.m4
@@ -1,96 +1,68 @@
-# strerror.m4 serial 17
-dnl Copyright (C) 2002, 2007-2015 Free Software Foundation, Inc.
+# strerror.m4 serial 9
+dnl Copyright (C) 2002, 2007-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_FUNC_STRERROR],
[
+ AC_REQUIRE([gl_FUNC_STRERROR_SEPARATE])
+ if test $REPLACE_STRERROR = 1; then
+ AC_LIBOBJ([strerror])
+ AC_DEFINE_UNQUOTED([REPLACE_STRERROR], [$REPLACE_STRERROR],
+ [Define this to 1 if strerror is broken.])
+ fi
+])
+
+# Like gl_FUNC_STRERROR, except prepare for separate compilation (no AC_LIBOBJ).
+AC_DEFUN([gl_FUNC_STRERROR_SEPARATE],
+[
AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
AC_REQUIRE([gl_HEADER_ERRNO_H])
- AC_REQUIRE([gl_FUNC_STRERROR_0])
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
- m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [
- AC_REQUIRE([gl_FUNC_STRERROR_R_WORKS])
- ])
- if test "$ERRNO_H:$REPLACE_STRERROR_0" = :0; then
+ if test -z "$ERRNO_H"; then
AC_CACHE_CHECK([for working strerror function],
[gl_cv_func_working_strerror],
[AC_RUN_IFELSE(
[AC_LANG_PROGRAM(
[[#include <string.h>
]],
- [[if (!*strerror (-2)) return 1;]])],
+ [[return !*strerror (-2);]])],
[gl_cv_func_working_strerror=yes],
[gl_cv_func_working_strerror=no],
- [case "$host_os" in
- # Guess yes on glibc systems.
- *-gnu*) gl_cv_func_working_strerror="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_working_strerror="guessing no" ;;
- esac
- ])
- ])
- case "$gl_cv_func_working_strerror" in
- *yes) ;;
- *)
- dnl The system's strerror() fails to return a string for out-of-range
- dnl integers. Replace it.
- REPLACE_STRERROR=1
- ;;
- esac
- m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [
- dnl If the system's strerror_r or __xpg_strerror_r clobbers strerror's
- dnl buffer, we must replace strerror.
- case "$gl_cv_func_strerror_r_works" in
- *no) REPLACE_STRERROR=1 ;;
- esac
+ [dnl Assume crossbuild works if it compiles.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <string.h>
+ ]],
+ [[return !*strerror (-2);]])],
+ [gl_cv_func_working_strerror=yes],
+ [gl_cv_func_working_strerror=no])
+ ])
])
+ if test $gl_cv_func_working_strerror = no; then
+ dnl The system's strerror() fails to return a string for out-of-range
+ dnl integers. Replace it.
+ REPLACE_STRERROR=1
+ fi
else
dnl The system's strerror() cannot know about the new errno values we add
- dnl to <errno.h>, or any fix for strerror(0). Replace it.
+ dnl to <errno.h>. Replace it.
REPLACE_STRERROR=1
fi
+ if test $REPLACE_STRERROR = 1; then
+ gl_PREREQ_STRERROR
+ fi
])
-dnl Detect if strerror(0) passes (that is, does not set errno, and does not
-dnl return a string that matches strerror(-1)).
-AC_DEFUN([gl_FUNC_STRERROR_0],
-[
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
- REPLACE_STRERROR_0=0
- AC_CACHE_CHECK([whether strerror(0) succeeds],
- [gl_cv_func_strerror_0_works],
- [AC_RUN_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <string.h>
- #include <errno.h>
- ]],
- [[int result = 0;
- char *str;
- errno = 0;
- str = strerror (0);
- if (!*str) result |= 1;
- if (errno) result |= 2;
- if (strstr (str, "nknown") || strstr (str, "ndefined"))
- result |= 4;
- return result;]])],
- [gl_cv_func_strerror_0_works=yes],
- [gl_cv_func_strerror_0_works=no],
- [case "$host_os" in
- # Guess yes on glibc systems.
- *-gnu*) gl_cv_func_strerror_0_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_strerror_0_works="guessing no" ;;
- esac
- ])
- ])
- case "$gl_cv_func_strerror_0_works" in
- *yes) ;;
- *)
- REPLACE_STRERROR_0=1
- AC_DEFINE([REPLACE_STRERROR_0], [1], [Define to 1 if strerror(0)
- does not return a message implying success.])
- ;;
- esac
+# Prerequisites of lib/strerror.c.
+AC_DEFUN([gl_PREREQ_STRERROR], [
+ AC_CHECK_DECLS([strerror])
+ AC_CHECK_HEADERS_ONCE([sys/socket.h])
+ if test $ac_cv_header_sys_socket_h != yes; then
+ dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
+ dnl the check for those headers unconditional; yet cygwin reports
+ dnl that the headers are present but cannot be compiled (since on
+ dnl cygwin, all socket information should come from sys/socket.h).
+ AC_CHECK_HEADERS([winsock2.h])
+ fi
])