Diff for /embedaddon/libiconv/srcm4/strerror.m4 between versions 1.1.1.1 and 1.1.1.3

version 1.1.1.1, 2012/02/21 22:57:49 version 1.1.1.3, 2021/03/17 13:38:46
Line 1 Line 1
# strerror.m4 serial 9# strerror.m4 serial 20
dnl Copyright (C) 2002, 2007-2008 Free Software Foundation, Inc.dnl Copyright (C) 2002, 2007-2019 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation  dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,  dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.  dnl with or without modifications, as long as this notice is preserved.
   
 AC_DEFUN([gl_FUNC_STRERROR],  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_STRING_H_DEFAULTS])
   AC_REQUIRE([gl_HEADER_ERRNO_H])    AC_REQUIRE([gl_HEADER_ERRNO_H])
  if test -z "$ERRNO_H"; then  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
     AC_CACHE_CHECK([for working strerror function],      AC_CACHE_CHECK([for working strerror function],
      [gl_cv_func_working_strerror],       [gl_cv_func_working_strerror],
      [AC_RUN_IFELSE(       [AC_RUN_IFELSE(
         [AC_LANG_PROGRAM(          [AC_LANG_PROGRAM(
            [[#include <string.h>             [[#include <string.h>
            ]],             ]],
           [[return !*strerror (-2);]])],           [[if (!*strerror (-2)) return 1;]])],
         [gl_cv_func_working_strerror=yes],          [gl_cv_func_working_strerror=yes],
         [gl_cv_func_working_strerror=no],          [gl_cv_func_working_strerror=no],
        [dnl Assume crossbuild works if it compiles.        [case "$host_os" in
         AC_COMPILE_IFELSE(                          # Guess yes on glibc systems.
           [AC_LANG_PROGRAM(           *-gnu* | gnu*) gl_cv_func_working_strerror="guessing yes" ;;
              [[#include <string.h>                          # Guess yes on musl systems.
              ]],           *-musl*)       gl_cv_func_working_strerror="guessing yes" ;;
              [[return !*strerror (-2);]])],                          # If we don't know, assume the worst.
           [gl_cv_func_working_strerror=yes],           *)             gl_cv_func_working_strerror="guessing no" ;;
           [gl_cv_func_working_strerror=no])         esac
      ])        ])
     ])      ])
    if test $gl_cv_func_working_strerror = no; then    case "$gl_cv_func_working_strerror" in
      dnl The system's strerror() fails to return a string for out-of-range      *yes) ;;
      dnl integers. Replace it.      *)
      REPLACE_STRERROR=1        dnl The system's strerror() fails to return a string for out-of-range
    fi        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
     ])
   else    else
     dnl The system's strerror() cannot know about the new errno values we add      dnl The system's strerror() cannot know about the new errno values we add
    dnl to <errno.h>. Replace it.    dnl to <errno.h>, or any fix for strerror(0). Replace it.
     REPLACE_STRERROR=1      REPLACE_STRERROR=1
   fi    fi
   if test $REPLACE_STRERROR = 1; then  
     gl_PREREQ_STRERROR  
   fi  
 ])  ])
   
# Prerequisites of lib/strerror.c.dnl Detect if strerror(0) passes (that is, does not set errno, and does not
AC_DEFUN([gl_PREREQ_STRERROR], [dnl return a string that matches strerror(-1)).
  AC_CHECK_DECLS([strerror])AC_DEFUN([gl_FUNC_STRERROR_0],
  AC_CHECK_HEADERS_ONCE([sys/socket.h])[
  if test $ac_cv_header_sys_socket_h != yes; then  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
    dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make  REPLACE_STRERROR_0=0
    dnl the check for those headers unconditional; yet cygwin reports  AC_CACHE_CHECK([whether strerror(0) succeeds],
    dnl that the headers are present but cannot be compiled (since on   [gl_cv_func_strerror_0_works],
    dnl cygwin, all socket information should come from sys/socket.h).   [AC_RUN_IFELSE(
    AC_CHECK_HEADERS([winsock2.h])      [AC_LANG_PROGRAM(
  fi         [[#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* | gnu*) gl_cv_func_strerror_0_works="guessing yes" ;;
                         # Guess yes on musl systems.
          *-musl*)       gl_cv_func_strerror_0_works="guessing yes" ;;
                         # Guess yes on native Windows.
          mingw*)        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
 ])  ])

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>