diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-05-20 12:50:01 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-05-20 12:50:01 +0200 |
commit | 5854b4c2557dcb75c6263df32932047688d5c64b (patch) | |
tree | 6ec061b102f5811c02e2472310dac347c7fb9f9f /gl/m4/strerror.m4 | |
parent | f9f404609cd03181eb88cb7d0280b2016c9a8e67 (diff) | |
download | gnutls-5854b4c2557dcb75c6263df32932047688d5c64b.tar.gz |
Added new gnulib and error.h.
Diffstat (limited to 'gl/m4/strerror.m4')
-rw-r--r-- | gl/m4/strerror.m4 | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/gl/m4/strerror.m4 b/gl/m4/strerror.m4 new file mode 100644 index 0000000000..d891031f61 --- /dev/null +++ b/gl/m4/strerror.m4 @@ -0,0 +1,67 @@ +# strerror.m4 serial 10 +dnl Copyright (C) 2002, 2007-2011 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]) + 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> + #include <errno.h> + ]], + [[int result = 0; + if (!*strerror (-2)) result |= 1; + errno = 0; + if (!*strerror (0)) result |= 2; + if (errno) result |= 4; + return result;]])], + [gl_cv_func_working_strerror=yes], + [gl_cv_func_working_strerror=no], + [dnl Be pessimistic on cross-compiles for now. + 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>. Replace it. + REPLACE_STRERROR=1 + fi + if test $REPLACE_STRERROR = 1; then + gl_PREREQ_STRERROR + fi +]) + +# 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 +]) |