errno_h.m4 2.9 KB

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