1 # unistd_h.m4 serial 89
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_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])
166 m4_require(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS])
167 AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
170 AC_DEFUN([gl_UNISTD_H_DEFAULTS],
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])