1 # unistd_h.m4 serial 88
2 dnl Copyright (C) 2006-2021 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.
7 dnl Written by Simon Josefsson, Bruno Haible.
9 AC_DEFUN_ONCE([gl_UNISTD_H],
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])
15 gl_CHECK_NEXT_HEADERS([unistd.h])
16 if test $ac_cv_header_unistd_h = yes; then
21 AC_SUBST([HAVE_UNISTD_H])
23 dnl Ensure the type pid_t gets defined.
24 AC_REQUIRE([AC_TYPE_PID_T])
26 dnl Determine WINDOWS_64_BIT_OFF_T.
27 AC_REQUIRE([gl_TYPE_OFF_T])
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([[
35 /* Some systems declare various items in the wrong headers. */
36 #if !(defined __GLIBC__ && !defined __UCLIBC__)
40 # if defined _WIN32 && ! defined __CYGWIN__
44 ]], [access chdir chown copy_file_range dup dup2 dup3 environ euidaccess
45 execl execle execlp execv execve execvp execvpe
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])
54 AC_REQUIRE([AC_C_RESTRICT])
56 AC_CHECK_DECLS_ONCE([execvpe])
57 if test $ac_cv_have_decl_execvpe = no; then
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.
66 AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
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])
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.
78 AC_DEFUN([gl_UNISTD_H_REQUIRE_DEFAULTS],
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_NONBLOCKING])
137 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_SIGPIPE])
138 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINK])
139 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINKAT])
140 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_USLEEP])
141 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WRITE])
142 dnl Support Microsoft deprecated alias function names by default.
143 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ACCESS], [1])
144 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CHDIR], [1])
145 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CLOSE], [1])
146 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP], [1])
147 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP2], [1])
148 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECL], [1])
149 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLE], [1])
150 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLP], [1])
151 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECV], [1])
152 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVE], [1])
153 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVP], [1])
154 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVPE], [1])
155 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETCWD], [1])
156 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETPID], [1])
157 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ISATTY], [1])
158 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_LSEEK], [1])
159 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_READ], [1])
160 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_RMDIR], [1])
161 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_SWAB], [1])
162 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UNLINK], [1])
163 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WRITE], [1])
165 m4_require(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS])
166 AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
169 AC_DEFUN([gl_UNISTD_H_DEFAULTS],
171 dnl Assume proper GNU behavior unless another module says otherwise.
172 HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN])
173 HAVE_COPY_FILE_RANGE=1; AC_SUBST([HAVE_COPY_FILE_RANGE])
174 HAVE_DUP3=1; AC_SUBST([HAVE_DUP3])
175 HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS])
176 HAVE_EXECVPE=1; AC_SUBST([HAVE_EXECVPE])
177 HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT])
178 HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR])
179 HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT])
180 HAVE_FDATASYNC=1; AC_SUBST([HAVE_FDATASYNC])
181 HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC])
182 HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE])
183 HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE])
184 HAVE_GETENTROPY=1; AC_SUBST([HAVE_GETENTROPY])
185 HAVE_GETGROUPS=1; AC_SUBST([HAVE_GETGROUPS])
186 HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME])
187 HAVE_GETLOGIN=1; AC_SUBST([HAVE_GETLOGIN])
188 HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE])
189 HAVE_GETPASS=1; AC_SUBST([HAVE_GETPASS])
190 HAVE_GROUP_MEMBER=1; AC_SUBST([HAVE_GROUP_MEMBER])
191 HAVE_LCHOWN=1; AC_SUBST([HAVE_LCHOWN])
192 HAVE_LINK=1; AC_SUBST([HAVE_LINK])
193 HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT])
194 HAVE_PIPE=1; AC_SUBST([HAVE_PIPE])
195 HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2])
196 HAVE_PREAD=1; AC_SUBST([HAVE_PREAD])
197 HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE])
198 HAVE_READLINK=1; AC_SUBST([HAVE_READLINK])
199 HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT])
200 HAVE_SETHOSTNAME=1; AC_SUBST([HAVE_SETHOSTNAME])
201 HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP])
202 HAVE_SYMLINK=1; AC_SUBST([HAVE_SYMLINK])
203 HAVE_SYMLINKAT=1; AC_SUBST([HAVE_SYMLINKAT])
204 HAVE_UNLINKAT=1; AC_SUBST([HAVE_UNLINKAT])
205 HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP])
206 HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON])
207 HAVE_DECL_EXECVPE=1; AC_SUBST([HAVE_DECL_EXECVPE])
208 HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR])
209 HAVE_DECL_FDATASYNC=1; AC_SUBST([HAVE_DECL_FDATASYNC])
210 HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME])
211 HAVE_DECL_GETLOGIN=1; AC_SUBST([HAVE_DECL_GETLOGIN])
212 HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
213 HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE])
214 HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL])
215 HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME])
216 HAVE_DECL_TRUNCATE=1; AC_SUBST([HAVE_DECL_TRUNCATE])
217 HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R])
218 HAVE_OS_H=0; AC_SUBST([HAVE_OS_H])
219 HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H])
220 REPLACE_ACCESS=0; AC_SUBST([REPLACE_ACCESS])
221 REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN])
222 REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE])
223 REPLACE_DUP=0; AC_SUBST([REPLACE_DUP])
224 REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2])
225 REPLACE_EXECL=0; AC_SUBST([REPLACE_EXECL])
226 REPLACE_EXECLE=0; AC_SUBST([REPLACE_EXECLE])
227 REPLACE_EXECLP=0; AC_SUBST([REPLACE_EXECLP])
228 REPLACE_EXECV=0; AC_SUBST([REPLACE_EXECV])
229 REPLACE_EXECVE=0; AC_SUBST([REPLACE_EXECVE])
230 REPLACE_EXECVP=0; AC_SUBST([REPLACE_EXECVP])
231 REPLACE_EXECVPE=0; AC_SUBST([REPLACE_EXECVPE])
232 REPLACE_FACCESSAT=0; AC_SUBST([REPLACE_FACCESSAT])
233 REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT])
234 REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE])
235 REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD])
236 REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME])
237 REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE])
238 REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R])
239 REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS])
240 REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE])
241 REPLACE_GETPASS=0; AC_SUBST([REPLACE_GETPASS])
242 REPLACE_ISATTY=0; AC_SUBST([REPLACE_ISATTY])
243 REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN])
244 REPLACE_LINK=0; AC_SUBST([REPLACE_LINK])
245 REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT])
246 REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK])
247 REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD])
248 REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE])
249 REPLACE_READ=0; AC_SUBST([REPLACE_READ])
250 REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK])
251 REPLACE_READLINKAT=0; AC_SUBST([REPLACE_READLINKAT])
252 REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR])
253 REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP])
254 REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK])
255 REPLACE_SYMLINKAT=0; AC_SUBST([REPLACE_SYMLINKAT])
256 REPLACE_TRUNCATE=0; AC_SUBST([REPLACE_TRUNCATE])
257 REPLACE_TTYNAME_R=0; AC_SUBST([REPLACE_TTYNAME_R])
258 REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK])
259 REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT])
260 REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP])
261 REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE])
262 UNISTD_H_HAVE_SYS_RANDOM_H=0; AC_SUBST([UNISTD_H_HAVE_SYS_RANDOM_H])
263 UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H])
264 UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
265 AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS])