1# errno_h.m4 serial 13 2dnl Copyright (C) 2004, 2006, 2008-2020 Free Software Foundation, Inc. 3dnl This file is free software; the Free Software Foundation 4dnl gives unlimited permission to copy and/or distribute it, 5dnl with or without modifications, as long as this notice is preserved. 6 7AC_PREREQ([2.61]) 8 9AC_DEFUN_ONCE([gl_HEADER_ERRNO_H], 10[ 11 AC_REQUIRE([AC_PROG_CC]) 12 AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [ 13 AC_EGREP_CPP([booboo],[ 14#include <errno.h> 15#if !defined ETXTBSY 16booboo 17#endif 18#if !defined ENOMSG 19booboo 20#endif 21#if !defined EIDRM 22booboo 23#endif 24#if !defined ENOLINK 25booboo 26#endif 27#if !defined EPROTO 28booboo 29#endif 30#if !defined EMULTIHOP 31booboo 32#endif 33#if !defined EBADMSG 34booboo 35#endif 36#if !defined EOVERFLOW 37booboo 38#endif 39#if !defined ENOTSUP 40booboo 41#endif 42#if !defined ENETRESET 43booboo 44#endif 45#if !defined ECONNABORTED 46booboo 47#endif 48#if !defined ESTALE 49booboo 50#endif 51#if !defined EDQUOT 52booboo 53#endif 54#if !defined ECANCELED 55booboo 56#endif 57#if !defined EOWNERDEAD 58booboo 59#endif 60#if !defined ENOTRECOVERABLE 61booboo 62#endif 63#if !defined EILSEQ 64booboo 65#endif 66 ], 67 [gl_cv_header_errno_h_complete=no], 68 [gl_cv_header_errno_h_complete=yes]) 69 ]) 70 if test $gl_cv_header_errno_h_complete = yes; then 71 ERRNO_H='' 72 else 73 gl_NEXT_HEADERS([errno.h]) 74 ERRNO_H='errno.h' 75 fi 76 AC_SUBST([ERRNO_H]) 77 AM_CONDITIONAL([GL_GENERATE_ERRNO_H], [test -n "$ERRNO_H"]) 78 gl_REPLACE_ERRNO_VALUE([EMULTIHOP]) 79 gl_REPLACE_ERRNO_VALUE([ENOLINK]) 80 gl_REPLACE_ERRNO_VALUE([EOVERFLOW]) 81]) 82 83# Assuming $1 = EOVERFLOW. 84# The EOVERFLOW errno value ought to be defined in <errno.h>, according to 85# POSIX. But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and 86# some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined. 87# Check for the value of EOVERFLOW. 88# Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE. 89AC_DEFUN([gl_REPLACE_ERRNO_VALUE], 90[ 91 if test -n "$ERRNO_H"; then 92 AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [ 93 AC_EGREP_CPP([yes],[ 94#include <errno.h> 95#ifdef ]$1[ 96yes 97#endif 98 ], 99 [gl_cv_header_errno_h_]$1[=yes], 100 [gl_cv_header_errno_h_]$1[=no]) 101 if test $gl_cv_header_errno_h_]$1[ = no; then 102 AC_EGREP_CPP([yes],[ 103#define _XOPEN_SOURCE_EXTENDED 1 104#include <errno.h> 105#ifdef ]$1[ 106yes 107#endif 108 ], [gl_cv_header_errno_h_]$1[=hidden]) 109 if test $gl_cv_header_errno_h_]$1[ = hidden; then 110 dnl The macro exists but is hidden. 111 dnl Define it to the same value. 112 AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [ 113#define _XOPEN_SOURCE_EXTENDED 1 114#include <errno.h> 115/* The following two lines are a workaround against an autoconf-2.52 bug. */ 116#include <stdio.h> 117#include <stdlib.h> 118]) 119 fi 120 fi 121 ]) 122 case $gl_cv_header_errno_h_]$1[ in 123 yes | no) 124 ]$1[_HIDDEN=0; ]$1[_VALUE= 125 ;; 126 *) 127 ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1[" 128 ;; 129 esac 130 AC_SUBST($1[_HIDDEN]) 131 AC_SUBST($1[_VALUE]) 132 fi 133]) 134