diff options
Diffstat (limited to 'gnulib-m4/strerror.m4')
| -rw-r--r-- | gnulib-m4/strerror.m4 | 116 | 
1 files changed, 44 insertions, 72 deletions
| diff --git a/gnulib-m4/strerror.m4 b/gnulib-m4/strerror.m4 index 75a17f20..1649b245 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  ]) | 
