1# unistd_h.m4 serial 89 2dnl Copyright (C) 2006-2021 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 7dnl Written by Simon Josefsson, Bruno Haible. 8 9AC_DEFUN_ONCE([gl_UNISTD_H], 10[ 11 dnl Ensure to expand the default settings once only, before all statements 12 dnl that occur in other macros. 13 AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) 14 15 gl_CHECK_NEXT_HEADERS([unistd.h]) 16 if test $ac_cv_header_unistd_h = yes; then 17 HAVE_UNISTD_H=1 18 else 19 HAVE_UNISTD_H=0 20 fi 21 AC_SUBST([HAVE_UNISTD_H]) 22 23 dnl Ensure the type pid_t gets defined. 24 AC_REQUIRE([AC_TYPE_PID_T]) 25 26 dnl Determine WINDOWS_64_BIT_OFF_T. 27 AC_REQUIRE([gl_TYPE_OFF_T]) 28 29 dnl Check for declarations of anything we want to poison if the 30 dnl corresponding gnulib module is not in use. 31 gl_WARN_ON_USE_PREPARE([[ 32#if HAVE_UNISTD_H 33# include <unistd.h> 34#endif 35/* Some systems declare various items in the wrong headers. */ 36#if !(defined __GLIBC__ && !defined __UCLIBC__) 37# include <fcntl.h> 38# include <stdio.h> 39# include <stdlib.h> 40# if defined _WIN32 && ! defined __CYGWIN__ 41# include <io.h> 42# endif 43#endif 44 ]], [access chdir chown copy_file_range dup dup2 dup3 environ euidaccess 45 execl execle execlp execv execve execvp execvpe 46 faccessat fchdir 47 fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize 48 getentropy getgroups gethostname getlogin getlogin_r getpagesize getpass 49 getusershell setusershell endusershell 50 group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite 51 readlink readlinkat rmdir sethostname sleep symlink symlinkat 52 truncate ttyname_r unlink unlinkat usleep]) 53 54 AC_REQUIRE([AC_C_RESTRICT]) 55 56 AC_CHECK_DECLS_ONCE([execvpe]) 57 if test $ac_cv_have_decl_execvpe = no; then 58 HAVE_DECL_EXECVPE=0 59 fi 60]) 61 62# gl_UNISTD_MODULE_INDICATOR([modulename]) 63# sets the shell variable that indicates the presence of the given module 64# to a C preprocessor expression that will evaluate to 1. 65# This macro invocation must not occur in macros that are AC_REQUIREd. 66AC_DEFUN([gl_UNISTD_MODULE_INDICATOR], 67[ 68 dnl Ensure to expand the default settings once only. 69 gl_UNISTD_H_REQUIRE_DEFAULTS 70 gl_MODULE_INDICATOR_SET_VARIABLE([$1]) 71 dnl Define it also as a C macro, for the benefit of the unit tests. 72 gl_MODULE_INDICATOR_FOR_TESTS([$1]) 73]) 74 75# Initializes the default values for AC_SUBSTed shell variables. 76# This macro must not be AC_REQUIREd. It must only be invoked, and only 77# outside of macros or in macros that are not AC_REQUIREd. 78AC_DEFUN([gl_UNISTD_H_REQUIRE_DEFAULTS], 79[ 80 m4_defun(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS], [ 81 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCESS]) 82 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHDIR]) 83 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHOWN]) 84 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CLOSE]) 85 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPY_FILE_RANGE]) 86 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP]) 87 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP2]) 88 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP3]) 89 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ENVIRON]) 90 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EUIDACCESS]) 91 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECL]) 92 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECLE]) 93 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECLP]) 94 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECV]) 95 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVE]) 96 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVP]) 97 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVPE]) 98 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FACCESSAT]) 99 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHDIR]) 100 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHOWNAT]) 101 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FDATASYNC]) 102 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSYNC]) 103 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTRUNCATE]) 104 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETCWD]) 105 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDOMAINNAME]) 106 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDTABLESIZE]) 107 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETENTROPY]) 108 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETGROUPS]) 109 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETHOSTNAME]) 110 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOGIN]) 111 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOGIN_R]) 112 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETOPT_POSIX]) 113 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPAGESIZE]) 114 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPASS]) 115 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETUSERSHELL]) 116 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GROUP_MEMBER]) 117 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISATTY]) 118 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LCHOWN]) 119 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LINK]) 120 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LINKAT]) 121 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LSEEK]) 122 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PIPE]) 123 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PIPE2]) 124 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PREAD]) 125 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PWRITE]) 126 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READ]) 127 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READLINK]) 128 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READLINKAT]) 129 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RMDIR]) 130 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETHOSTNAME]) 131 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SLEEP]) 132 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYMLINK]) 133 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYMLINKAT]) 134 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCATE]) 135 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TTYNAME_R]) 136 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_GETOPT]) 137 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_NONBLOCKING]) 138 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_SIGPIPE]) 139 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINK]) 140 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINKAT]) 141 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_USLEEP]) 142 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WRITE]) 143 dnl Support Microsoft deprecated alias function names by default. 144 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ACCESS], [1]) 145 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CHDIR], [1]) 146 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CLOSE], [1]) 147 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP], [1]) 148 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP2], [1]) 149 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECL], [1]) 150 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLE], [1]) 151 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLP], [1]) 152 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECV], [1]) 153 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVE], [1]) 154 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVP], [1]) 155 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVPE], [1]) 156 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETCWD], [1]) 157 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETPID], [1]) 158 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ISATTY], [1]) 159 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_LSEEK], [1]) 160 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_READ], [1]) 161 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_RMDIR], [1]) 162 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_SWAB], [1]) 163 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UNLINK], [1]) 164 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WRITE], [1]) 165 ]) 166 m4_require(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS]) 167 AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) 168]) 169 170AC_DEFUN([gl_UNISTD_H_DEFAULTS], 171[ 172 dnl Assume proper GNU behavior unless another module says otherwise. 173 HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN]) 174 HAVE_COPY_FILE_RANGE=1; AC_SUBST([HAVE_COPY_FILE_RANGE]) 175 HAVE_DUP3=1; AC_SUBST([HAVE_DUP3]) 176 HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS]) 177 HAVE_EXECVPE=1; AC_SUBST([HAVE_EXECVPE]) 178 HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT]) 179 HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR]) 180 HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT]) 181 HAVE_FDATASYNC=1; AC_SUBST([HAVE_FDATASYNC]) 182 HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC]) 183 HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE]) 184 HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE]) 185 HAVE_GETENTROPY=1; AC_SUBST([HAVE_GETENTROPY]) 186 HAVE_GETGROUPS=1; AC_SUBST([HAVE_GETGROUPS]) 187 HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME]) 188 HAVE_GETLOGIN=1; AC_SUBST([HAVE_GETLOGIN]) 189 HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE]) 190 HAVE_GETPASS=1; AC_SUBST([HAVE_GETPASS]) 191 HAVE_GROUP_MEMBER=1; AC_SUBST([HAVE_GROUP_MEMBER]) 192 HAVE_LCHOWN=1; AC_SUBST([HAVE_LCHOWN]) 193 HAVE_LINK=1; AC_SUBST([HAVE_LINK]) 194 HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT]) 195 HAVE_PIPE=1; AC_SUBST([HAVE_PIPE]) 196 HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2]) 197 HAVE_PREAD=1; AC_SUBST([HAVE_PREAD]) 198 HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE]) 199 HAVE_READLINK=1; AC_SUBST([HAVE_READLINK]) 200 HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT]) 201 HAVE_SETHOSTNAME=1; AC_SUBST([HAVE_SETHOSTNAME]) 202 HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP]) 203 HAVE_SYMLINK=1; AC_SUBST([HAVE_SYMLINK]) 204 HAVE_SYMLINKAT=1; AC_SUBST([HAVE_SYMLINKAT]) 205 HAVE_UNLINKAT=1; AC_SUBST([HAVE_UNLINKAT]) 206 HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP]) 207 HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON]) 208 HAVE_DECL_EXECVPE=1; AC_SUBST([HAVE_DECL_EXECVPE]) 209 HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR]) 210 HAVE_DECL_FDATASYNC=1; AC_SUBST([HAVE_DECL_FDATASYNC]) 211 HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME]) 212 HAVE_DECL_GETLOGIN=1; AC_SUBST([HAVE_DECL_GETLOGIN]) 213 HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R]) 214 HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE]) 215 HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL]) 216 HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME]) 217 HAVE_DECL_TRUNCATE=1; AC_SUBST([HAVE_DECL_TRUNCATE]) 218 HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R]) 219 HAVE_OS_H=0; AC_SUBST([HAVE_OS_H]) 220 HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H]) 221 REPLACE_ACCESS=0; AC_SUBST([REPLACE_ACCESS]) 222 REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN]) 223 REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE]) 224 REPLACE_DUP=0; AC_SUBST([REPLACE_DUP]) 225 REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2]) 226 REPLACE_EXECL=0; AC_SUBST([REPLACE_EXECL]) 227 REPLACE_EXECLE=0; AC_SUBST([REPLACE_EXECLE]) 228 REPLACE_EXECLP=0; AC_SUBST([REPLACE_EXECLP]) 229 REPLACE_EXECV=0; AC_SUBST([REPLACE_EXECV]) 230 REPLACE_EXECVE=0; AC_SUBST([REPLACE_EXECVE]) 231 REPLACE_EXECVP=0; AC_SUBST([REPLACE_EXECVP]) 232 REPLACE_EXECVPE=0; AC_SUBST([REPLACE_EXECVPE]) 233 REPLACE_FACCESSAT=0; AC_SUBST([REPLACE_FACCESSAT]) 234 REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT]) 235 REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE]) 236 REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD]) 237 REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME]) 238 REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE]) 239 REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R]) 240 REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS]) 241 REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE]) 242 REPLACE_GETPASS=0; AC_SUBST([REPLACE_GETPASS]) 243 REPLACE_ISATTY=0; AC_SUBST([REPLACE_ISATTY]) 244 REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN]) 245 REPLACE_LINK=0; AC_SUBST([REPLACE_LINK]) 246 REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT]) 247 REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK]) 248 REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD]) 249 REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE]) 250 REPLACE_READ=0; AC_SUBST([REPLACE_READ]) 251 REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK]) 252 REPLACE_READLINKAT=0; AC_SUBST([REPLACE_READLINKAT]) 253 REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR]) 254 REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP]) 255 REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK]) 256 REPLACE_SYMLINKAT=0; AC_SUBST([REPLACE_SYMLINKAT]) 257 REPLACE_TRUNCATE=0; AC_SUBST([REPLACE_TRUNCATE]) 258 REPLACE_TTYNAME_R=0; AC_SUBST([REPLACE_TTYNAME_R]) 259 REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK]) 260 REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT]) 261 REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP]) 262 REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE]) 263 UNISTD_H_HAVE_SYS_RANDOM_H=0; AC_SUBST([UNISTD_H_HAVE_SYS_RANDOM_H]) 264 UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H]) 265 UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0; 266 AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS]) 267]) 268