Mercurial > emacs
comparison lib/unistd.in.h @ 112311:babd014aab81
Regenerate.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Sat, 08 Jan 2011 23:33:50 -0800 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
112310:e838cdd68eae | 112311:babd014aab81 |
---|---|
1 /* Substitute for and wrapper around <unistd.h>. | |
2 Copyright (C) 2003-2011 Free Software Foundation, Inc. | |
3 | |
4 This program is free software; you can redistribute it and/or modify | |
5 it under the terms of the GNU General Public License as published by | |
6 the Free Software Foundation; either version 3, or (at your option) | |
7 any later version. | |
8 | |
9 This program is distributed in the hope that it will be useful, | |
10 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 GNU General Public License for more details. | |
13 | |
14 You should have received a copy of the GNU General Public License | |
15 along with this program; if not, write to the Free Software Foundation, | |
16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | |
17 | |
18 #if __GNUC__ >= 3 | |
19 @PRAGMA_SYSTEM_HEADER@ | |
20 #endif | |
21 @PRAGMA_COLUMNS@ | |
22 | |
23 /* Special invocation convention: | |
24 - On mingw, several headers, including <winsock2.h>, include <unistd.h>, | |
25 but we need to ensure that both the system <unistd.h> and <winsock2.h> | |
26 are completely included before we replace gethostname. */ | |
27 #if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \ | |
28 && !defined _GL_WINSOCK2_H_WITNESS && defined _WINSOCK2_H | |
29 /* <unistd.h> is being indirectly included for the first time from | |
30 <winsock2.h>; avoid declaring any overrides. */ | |
31 # if @HAVE_UNISTD_H@ | |
32 # @INCLUDE_NEXT@ @NEXT_UNISTD_H@ | |
33 # else | |
34 # error unexpected; report this to bug-gnulib@gnu.org | |
35 # endif | |
36 # define _GL_WINSOCK2_H_WITNESS | |
37 | |
38 /* Normal invocation. */ | |
39 #elif !defined _GL_UNISTD_H | |
40 | |
41 /* The include_next requires a split double-inclusion guard. */ | |
42 #if @HAVE_UNISTD_H@ | |
43 # @INCLUDE_NEXT@ @NEXT_UNISTD_H@ | |
44 #endif | |
45 | |
46 /* Get all possible declarations of gethostname(). */ | |
47 #if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \ | |
48 && !defined _GL_INCLUDING_WINSOCK2_H | |
49 # define _GL_INCLUDING_WINSOCK2_H | |
50 # include <winsock2.h> | |
51 # undef _GL_INCLUDING_WINSOCK2_H | |
52 #endif | |
53 | |
54 #if !defined _GL_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H | |
55 #define _GL_UNISTD_H | |
56 | |
57 /* NetBSD 5.0 mis-defines NULL. Also get size_t. */ | |
58 #include <stddef.h> | |
59 | |
60 /* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>. */ | |
61 /* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>. */ | |
62 /* But avoid namespace pollution on glibc systems. */ | |
63 #if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \ | |
64 || ((@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) \ | |
65 && defined __CYGWIN__)) \ | |
66 && ! defined __GLIBC__ | |
67 # include <stdio.h> | |
68 #endif | |
69 | |
70 /* Cygwin 1.7.1 declares unlinkat in <fcntl.h>, not in <unistd.h>. */ | |
71 /* But avoid namespace pollution on glibc systems. */ | |
72 #if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \ | |
73 && ! defined __GLIBC__ | |
74 # include <fcntl.h> | |
75 #endif | |
76 | |
77 /* mingw fails to declare _exit in <unistd.h>. */ | |
78 /* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>. */ | |
79 /* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>. */ | |
80 /* But avoid namespace pollution on glibc systems. */ | |
81 #ifndef __GLIBC__ | |
82 # include <stdlib.h> | |
83 #endif | |
84 | |
85 /* mingw declares getcwd in <io.h>, not in <unistd.h>. */ | |
86 #if ((@GNULIB_GETCWD@ || defined GNULIB_POSIXCHECK) \ | |
87 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)) | |
88 # include <io.h> | |
89 #endif | |
90 | |
91 /* AIX and OSF/1 5.1 declare getdomainname in <netdb.h>, not in <unistd.h>. | |
92 NonStop Kernel declares gethostname in <netdb.h>, not in <unistd.h>. */ | |
93 /* But avoid namespace pollution on glibc systems. */ | |
94 #if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \ | |
95 || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \ | |
96 && !defined __GLIBC__ | |
97 # include <netdb.h> | |
98 #endif | |
99 | |
100 #if (@GNULIB_WRITE@ || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \ | |
101 || @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK) | |
102 /* Get ssize_t. */ | |
103 # include <sys/types.h> | |
104 #endif | |
105 | |
106 /* Get getopt(), optarg, optind, opterr, optopt. | |
107 But avoid namespace pollution on glibc systems. */ | |
108 #if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT | |
109 # include <getopt.h> | |
110 #endif | |
111 | |
112 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ | |
113 | |
114 /* The definition of _GL_ARG_NONNULL is copied here. */ | |
115 | |
116 /* The definition of _GL_WARN_ON_USE is copied here. */ | |
117 | |
118 | |
119 #if @GNULIB_GETHOSTNAME@ | |
120 /* Get all possible declarations of gethostname(). */ | |
121 # if @UNISTD_H_HAVE_WINSOCK2_H@ | |
122 # if !defined _GL_SYS_SOCKET_H | |
123 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
124 # undef socket | |
125 # define socket socket_used_without_including_sys_socket_h | |
126 # undef connect | |
127 # define connect connect_used_without_including_sys_socket_h | |
128 # undef accept | |
129 # define accept accept_used_without_including_sys_socket_h | |
130 # undef bind | |
131 # define bind bind_used_without_including_sys_socket_h | |
132 # undef getpeername | |
133 # define getpeername getpeername_used_without_including_sys_socket_h | |
134 # undef getsockname | |
135 # define getsockname getsockname_used_without_including_sys_socket_h | |
136 # undef getsockopt | |
137 # define getsockopt getsockopt_used_without_including_sys_socket_h | |
138 # undef listen | |
139 # define listen listen_used_without_including_sys_socket_h | |
140 # undef recv | |
141 # define recv recv_used_without_including_sys_socket_h | |
142 # undef send | |
143 # define send send_used_without_including_sys_socket_h | |
144 # undef recvfrom | |
145 # define recvfrom recvfrom_used_without_including_sys_socket_h | |
146 # undef sendto | |
147 # define sendto sendto_used_without_including_sys_socket_h | |
148 # undef setsockopt | |
149 # define setsockopt setsockopt_used_without_including_sys_socket_h | |
150 # undef shutdown | |
151 # define shutdown shutdown_used_without_including_sys_socket_h | |
152 # else | |
153 _GL_WARN_ON_USE (socket, | |
154 "socket() used without including <sys/socket.h>"); | |
155 _GL_WARN_ON_USE (connect, | |
156 "connect() used without including <sys/socket.h>"); | |
157 _GL_WARN_ON_USE (accept, | |
158 "accept() used without including <sys/socket.h>"); | |
159 _GL_WARN_ON_USE (bind, | |
160 "bind() used without including <sys/socket.h>"); | |
161 _GL_WARN_ON_USE (getpeername, | |
162 "getpeername() used without including <sys/socket.h>"); | |
163 _GL_WARN_ON_USE (getsockname, | |
164 "getsockname() used without including <sys/socket.h>"); | |
165 _GL_WARN_ON_USE (getsockopt, | |
166 "getsockopt() used without including <sys/socket.h>"); | |
167 _GL_WARN_ON_USE (listen, | |
168 "listen() used without including <sys/socket.h>"); | |
169 _GL_WARN_ON_USE (recv, | |
170 "recv() used without including <sys/socket.h>"); | |
171 _GL_WARN_ON_USE (send, | |
172 "send() used without including <sys/socket.h>"); | |
173 _GL_WARN_ON_USE (recvfrom, | |
174 "recvfrom() used without including <sys/socket.h>"); | |
175 _GL_WARN_ON_USE (sendto, | |
176 "sendto() used without including <sys/socket.h>"); | |
177 _GL_WARN_ON_USE (setsockopt, | |
178 "setsockopt() used without including <sys/socket.h>"); | |
179 _GL_WARN_ON_USE (shutdown, | |
180 "shutdown() used without including <sys/socket.h>"); | |
181 # endif | |
182 # endif | |
183 # if !defined _GL_SYS_SELECT_H | |
184 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
185 # undef select | |
186 # define select select_used_without_including_sys_select_h | |
187 # else | |
188 _GL_WARN_ON_USE (select, | |
189 "select() used without including <sys/select.h>"); | |
190 # endif | |
191 # endif | |
192 # endif | |
193 #endif | |
194 | |
195 | |
196 /* OS/2 EMX lacks these macros. */ | |
197 #ifndef STDIN_FILENO | |
198 # define STDIN_FILENO 0 | |
199 #endif | |
200 #ifndef STDOUT_FILENO | |
201 # define STDOUT_FILENO 1 | |
202 #endif | |
203 #ifndef STDERR_FILENO | |
204 # define STDERR_FILENO 2 | |
205 #endif | |
206 | |
207 /* Ensure *_OK macros exist. */ | |
208 #ifndef F_OK | |
209 # define F_OK 0 | |
210 # define X_OK 1 | |
211 # define W_OK 2 | |
212 # define R_OK 4 | |
213 #endif | |
214 | |
215 | |
216 /* Declare overridden functions. */ | |
217 | |
218 | |
219 #if defined GNULIB_POSIXCHECK | |
220 /* The access() function is a security risk. */ | |
221 _GL_WARN_ON_USE (access, "the access function is a security risk - " | |
222 "use the gnulib module faccessat instead"); | |
223 #endif | |
224 | |
225 | |
226 #if @GNULIB_CHOWN@ | |
227 /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE | |
228 to GID (if GID is not -1). Follow symbolic links. | |
229 Return 0 if successful, otherwise -1 and errno set. | |
230 See the POSIX:2001 specification | |
231 <http://www.opengroup.org/susv3xsh/chown.html>. */ | |
232 # if @REPLACE_CHOWN@ | |
233 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
234 # undef chown | |
235 # define chown rpl_chown | |
236 # endif | |
237 _GL_FUNCDECL_RPL (chown, int, (const char *file, uid_t uid, gid_t gid) | |
238 _GL_ARG_NONNULL ((1))); | |
239 _GL_CXXALIAS_RPL (chown, int, (const char *file, uid_t uid, gid_t gid)); | |
240 # else | |
241 # if !@HAVE_CHOWN@ | |
242 _GL_FUNCDECL_SYS (chown, int, (const char *file, uid_t uid, gid_t gid) | |
243 _GL_ARG_NONNULL ((1))); | |
244 # endif | |
245 _GL_CXXALIAS_SYS (chown, int, (const char *file, uid_t uid, gid_t gid)); | |
246 # endif | |
247 _GL_CXXALIASWARN (chown); | |
248 #elif defined GNULIB_POSIXCHECK | |
249 # undef chown | |
250 # if HAVE_RAW_DECL_CHOWN | |
251 _GL_WARN_ON_USE (chown, "chown fails to follow symlinks on some systems and " | |
252 "doesn't treat a uid or gid of -1 on some systems - " | |
253 "use gnulib module chown for portability"); | |
254 # endif | |
255 #endif | |
256 | |
257 | |
258 #if @GNULIB_CLOSE@ | |
259 # if @REPLACE_CLOSE@ | |
260 /* Automatically included by modules that need a replacement for close. */ | |
261 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
262 # undef close | |
263 # define close rpl_close | |
264 # endif | |
265 _GL_FUNCDECL_RPL (close, int, (int fd)); | |
266 _GL_CXXALIAS_RPL (close, int, (int fd)); | |
267 # else | |
268 _GL_CXXALIAS_SYS (close, int, (int fd)); | |
269 # endif | |
270 _GL_CXXALIASWARN (close); | |
271 #elif @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ | |
272 # undef close | |
273 # define close close_used_without_requesting_gnulib_module_close | |
274 #elif defined GNULIB_POSIXCHECK | |
275 # undef close | |
276 /* Assume close is always declared. */ | |
277 _GL_WARN_ON_USE (close, "close does not portably work on sockets - " | |
278 "use gnulib module close for portability"); | |
279 #endif | |
280 | |
281 | |
282 #if @REPLACE_DUP@ | |
283 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
284 # define dup rpl_dup | |
285 # endif | |
286 _GL_FUNCDECL_RPL (dup, int, (int oldfd)); | |
287 _GL_CXXALIAS_RPL (dup, int, (int oldfd)); | |
288 #else | |
289 _GL_CXXALIAS_SYS (dup, int, (int oldfd)); | |
290 #endif | |
291 _GL_CXXALIASWARN (dup); | |
292 | |
293 | |
294 #if @GNULIB_DUP2@ | |
295 /* Copy the file descriptor OLDFD into file descriptor NEWFD. Do nothing if | |
296 NEWFD = OLDFD, otherwise close NEWFD first if it is open. | |
297 Return newfd if successful, otherwise -1 and errno set. | |
298 See the POSIX:2001 specification | |
299 <http://www.opengroup.org/susv3xsh/dup2.html>. */ | |
300 # if @REPLACE_DUP2@ | |
301 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
302 # define dup2 rpl_dup2 | |
303 # endif | |
304 _GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd)); | |
305 _GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd)); | |
306 # else | |
307 # if !@HAVE_DUP2@ | |
308 _GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd)); | |
309 # endif | |
310 _GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd)); | |
311 # endif | |
312 _GL_CXXALIASWARN (dup2); | |
313 #elif defined GNULIB_POSIXCHECK | |
314 # undef dup2 | |
315 # if HAVE_RAW_DECL_DUP2 | |
316 _GL_WARN_ON_USE (dup2, "dup2 is unportable - " | |
317 "use gnulib module dup2 for portability"); | |
318 # endif | |
319 #endif | |
320 | |
321 | |
322 #if @GNULIB_DUP3@ | |
323 /* Copy the file descriptor OLDFD into file descriptor NEWFD, with the | |
324 specified flags. | |
325 The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>) | |
326 and O_TEXT, O_BINARY (defined in "binary-io.h"). | |
327 Close NEWFD first if it is open. | |
328 Return newfd if successful, otherwise -1 and errno set. | |
329 See the Linux man page at | |
330 <http://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html>. */ | |
331 # if @HAVE_DUP3@ | |
332 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
333 # define dup3 rpl_dup3 | |
334 # endif | |
335 _GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags)); | |
336 _GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags)); | |
337 # else | |
338 _GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags)); | |
339 _GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags)); | |
340 # endif | |
341 _GL_CXXALIASWARN (dup3); | |
342 #elif defined GNULIB_POSIXCHECK | |
343 # undef dup3 | |
344 # if HAVE_RAW_DECL_DUP3 | |
345 _GL_WARN_ON_USE (dup3, "dup3 is unportable - " | |
346 "use gnulib module dup3 for portability"); | |
347 # endif | |
348 #endif | |
349 | |
350 | |
351 #if @GNULIB_ENVIRON@ | |
352 # if !@HAVE_DECL_ENVIRON@ | |
353 /* Set of environment variables and values. An array of strings of the form | |
354 "VARIABLE=VALUE", terminated with a NULL. */ | |
355 # if defined __APPLE__ && defined __MACH__ | |
356 # include <crt_externs.h> | |
357 # define environ (*_NSGetEnviron ()) | |
358 # else | |
359 # ifdef __cplusplus | |
360 extern "C" { | |
361 # endif | |
362 extern char **environ; | |
363 # ifdef __cplusplus | |
364 } | |
365 # endif | |
366 # endif | |
367 # endif | |
368 #elif defined GNULIB_POSIXCHECK | |
369 # if HAVE_RAW_DECL_ENVIRON | |
370 static inline char *** | |
371 rpl_environ (void) | |
372 { | |
373 return &environ; | |
374 } | |
375 _GL_WARN_ON_USE (rpl_environ, "environ is unportable - " | |
376 "use gnulib module environ for portability"); | |
377 # undef environ | |
378 # define environ (*rpl_environ ()) | |
379 # endif | |
380 #endif | |
381 | |
382 | |
383 #if @GNULIB_EUIDACCESS@ | |
384 /* Like access(), except that it uses the effective user id and group id of | |
385 the current process. */ | |
386 # if !@HAVE_EUIDACCESS@ | |
387 _GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode) | |
388 _GL_ARG_NONNULL ((1))); | |
389 # endif | |
390 _GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode)); | |
391 _GL_CXXALIASWARN (euidaccess); | |
392 # if defined GNULIB_POSIXCHECK | |
393 /* Like access(), this function is a security risk. */ | |
394 _GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - " | |
395 "use the gnulib module faccessat instead"); | |
396 # endif | |
397 #elif defined GNULIB_POSIXCHECK | |
398 # undef euidaccess | |
399 # if HAVE_RAW_DECL_EUIDACCESS | |
400 _GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - " | |
401 "use gnulib module euidaccess for portability"); | |
402 # endif | |
403 #endif | |
404 | |
405 | |
406 #if @GNULIB_FACCESSAT@ | |
407 # if !@HAVE_FACCESSAT@ | |
408 _GL_FUNCDECL_SYS (faccessat, int, | |
409 (int fd, char const *file, int mode, int flag) | |
410 _GL_ARG_NONNULL ((2))); | |
411 # endif | |
412 _GL_CXXALIAS_SYS (faccessat, int, | |
413 (int fd, char const *file, int mode, int flag)); | |
414 _GL_CXXALIASWARN (faccessat); | |
415 #elif defined GNULIB_POSIXCHECK | |
416 # undef faccessat | |
417 # if HAVE_RAW_DECL_FACCESSAT | |
418 _GL_WARN_ON_USE (faccessat, "faccessat is not portable - " | |
419 "use gnulib module faccessat for portability"); | |
420 # endif | |
421 #endif | |
422 | |
423 | |
424 #if @GNULIB_FCHDIR@ | |
425 /* Change the process' current working directory to the directory on which | |
426 the given file descriptor is open. | |
427 Return 0 if successful, otherwise -1 and errno set. | |
428 See the POSIX:2001 specification | |
429 <http://www.opengroup.org/susv3xsh/fchdir.html>. */ | |
430 # if ! @HAVE_FCHDIR@ | |
431 _GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); | |
432 | |
433 /* Gnulib internal hooks needed to maintain the fchdir metadata. */ | |
434 _GL_EXTERN_C int _gl_register_fd (int fd, const char *filename) | |
435 _GL_ARG_NONNULL ((2)); | |
436 _GL_EXTERN_C void _gl_unregister_fd (int fd); | |
437 _GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd); | |
438 _GL_EXTERN_C const char *_gl_directory_name (int fd); | |
439 | |
440 # else | |
441 # if !@HAVE_DECL_FCHDIR@ | |
442 _GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); | |
443 # endif | |
444 # endif | |
445 _GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/)); | |
446 _GL_CXXALIASWARN (fchdir); | |
447 #elif defined GNULIB_POSIXCHECK | |
448 # undef fchdir | |
449 # if HAVE_RAW_DECL_FCHDIR | |
450 _GL_WARN_ON_USE (fchdir, "fchdir is unportable - " | |
451 "use gnulib module fchdir for portability"); | |
452 # endif | |
453 #endif | |
454 | |
455 | |
456 #if @GNULIB_FCHOWNAT@ | |
457 # if @REPLACE_FCHOWNAT@ | |
458 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
459 # undef fchownat | |
460 # define fchownat rpl_fchownat | |
461 # endif | |
462 _GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file, | |
463 uid_t owner, gid_t group, int flag) | |
464 _GL_ARG_NONNULL ((2))); | |
465 _GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file, | |
466 uid_t owner, gid_t group, int flag)); | |
467 # else | |
468 # if !@HAVE_FCHOWNAT@ | |
469 _GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file, | |
470 uid_t owner, gid_t group, int flag) | |
471 _GL_ARG_NONNULL ((2))); | |
472 # endif | |
473 _GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file, | |
474 uid_t owner, gid_t group, int flag)); | |
475 # endif | |
476 _GL_CXXALIASWARN (fchownat); | |
477 #elif defined GNULIB_POSIXCHECK | |
478 # undef fchownat | |
479 # if HAVE_RAW_DECL_FCHOWNAT | |
480 _GL_WARN_ON_USE (fchownat, "fchownat is not portable - " | |
481 "use gnulib module openat for portability"); | |
482 # endif | |
483 #endif | |
484 | |
485 | |
486 #if @GNULIB_FSYNC@ | |
487 /* Synchronize changes to a file. | |
488 Return 0 if successful, otherwise -1 and errno set. | |
489 See POSIX:2001 specification | |
490 <http://www.opengroup.org/susv3xsh/fsync.html>. */ | |
491 # if !@HAVE_FSYNC@ | |
492 _GL_FUNCDECL_SYS (fsync, int, (int fd)); | |
493 # endif | |
494 _GL_CXXALIAS_SYS (fsync, int, (int fd)); | |
495 _GL_CXXALIASWARN (fsync); | |
496 #elif defined GNULIB_POSIXCHECK | |
497 # undef fsync | |
498 # if HAVE_RAW_DECL_FSYNC | |
499 _GL_WARN_ON_USE (fsync, "fsync is unportable - " | |
500 "use gnulib module fsync for portability"); | |
501 # endif | |
502 #endif | |
503 | |
504 | |
505 #if @GNULIB_FTRUNCATE@ | |
506 /* Change the size of the file to which FD is opened to become equal to LENGTH. | |
507 Return 0 if successful, otherwise -1 and errno set. | |
508 See the POSIX:2001 specification | |
509 <http://www.opengroup.org/susv3xsh/ftruncate.html>. */ | |
510 # if !@HAVE_FTRUNCATE@ | |
511 _GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length)); | |
512 # endif | |
513 _GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length)); | |
514 _GL_CXXALIASWARN (ftruncate); | |
515 #elif defined GNULIB_POSIXCHECK | |
516 # undef ftruncate | |
517 # if HAVE_RAW_DECL_FTRUNCATE | |
518 _GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - " | |
519 "use gnulib module ftruncate for portability"); | |
520 # endif | |
521 #endif | |
522 | |
523 | |
524 #if @GNULIB_GETCWD@ | |
525 /* Get the name of the current working directory, and put it in SIZE bytes | |
526 of BUF. | |
527 Return BUF if successful, or NULL if the directory couldn't be determined | |
528 or SIZE was too small. | |
529 See the POSIX:2001 specification | |
530 <http://www.opengroup.org/susv3xsh/getcwd.html>. | |
531 Additionally, the gnulib module 'getcwd' guarantees the following GNU | |
532 extension: If BUF is NULL, an array is allocated with 'malloc'; the array | |
533 is SIZE bytes long, unless SIZE == 0, in which case it is as big as | |
534 necessary. */ | |
535 # if @REPLACE_GETCWD@ | |
536 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
537 # define getcwd rpl_getcwd | |
538 # endif | |
539 _GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size)); | |
540 _GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size)); | |
541 # else | |
542 /* Need to cast, because on mingw, the second parameter is | |
543 int size. */ | |
544 _GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size)); | |
545 # endif | |
546 _GL_CXXALIASWARN (getcwd); | |
547 #elif defined GNULIB_POSIXCHECK | |
548 # undef getcwd | |
549 # if HAVE_RAW_DECL_GETCWD | |
550 _GL_WARN_ON_USE (getcwd, "getcwd is unportable - " | |
551 "use gnulib module getcwd for portability"); | |
552 # endif | |
553 #endif | |
554 | |
555 | |
556 #if @GNULIB_GETDOMAINNAME@ | |
557 /* Return the NIS domain name of the machine. | |
558 WARNING! The NIS domain name is unrelated to the fully qualified host name | |
559 of the machine. It is also unrelated to email addresses. | |
560 WARNING! The NIS domain name is usually the empty string or "(none)" when | |
561 not using NIS. | |
562 | |
563 Put up to LEN bytes of the NIS domain name into NAME. | |
564 Null terminate it if the name is shorter than LEN. | |
565 If the NIS domain name is longer than LEN, set errno = EINVAL and return -1. | |
566 Return 0 if successful, otherwise set errno and return -1. */ | |
567 # if @REPLACE_GETDOMAINNAME@ | |
568 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
569 # undef getdomainname | |
570 # define getdomainname rpl_getdomainname | |
571 # endif | |
572 _GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len) | |
573 _GL_ARG_NONNULL ((1))); | |
574 _GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len)); | |
575 # else | |
576 # if !@HAVE_DECL_GETDOMAINNAME@ | |
577 _GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len) | |
578 _GL_ARG_NONNULL ((1))); | |
579 # endif | |
580 _GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len)); | |
581 # endif | |
582 _GL_CXXALIASWARN (getdomainname); | |
583 #elif defined GNULIB_POSIXCHECK | |
584 # undef getdomainname | |
585 # if HAVE_RAW_DECL_GETDOMAINNAME | |
586 _GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - " | |
587 "use gnulib module getdomainname for portability"); | |
588 # endif | |
589 #endif | |
590 | |
591 | |
592 #if @GNULIB_GETDTABLESIZE@ | |
593 /* Return the maximum number of file descriptors in the current process. | |
594 In POSIX, this is same as sysconf (_SC_OPEN_MAX). */ | |
595 # if !@HAVE_GETDTABLESIZE@ | |
596 _GL_FUNCDECL_SYS (getdtablesize, int, (void)); | |
597 # endif | |
598 _GL_CXXALIAS_SYS (getdtablesize, int, (void)); | |
599 _GL_CXXALIASWARN (getdtablesize); | |
600 #elif defined GNULIB_POSIXCHECK | |
601 # undef getdtablesize | |
602 # if HAVE_RAW_DECL_GETDTABLESIZE | |
603 _GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - " | |
604 "use gnulib module getdtablesize for portability"); | |
605 # endif | |
606 #endif | |
607 | |
608 | |
609 #if @GNULIB_GETGROUPS@ | |
610 /* Return the supplemental groups that the current process belongs to. | |
611 It is unspecified whether the effective group id is in the list. | |
612 If N is 0, return the group count; otherwise, N describes how many | |
613 entries are available in GROUPS. Return -1 and set errno if N is | |
614 not 0 and not large enough. Fails with ENOSYS on some systems. */ | |
615 # if @REPLACE_GETGROUPS@ | |
616 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
617 # undef getgroups | |
618 # define getgroups rpl_getgroups | |
619 # endif | |
620 _GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups)); | |
621 _GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups)); | |
622 # else | |
623 # if !@HAVE_GETGROUPS@ | |
624 _GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups)); | |
625 # endif | |
626 _GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups)); | |
627 # endif | |
628 _GL_CXXALIASWARN (getgroups); | |
629 #elif defined GNULIB_POSIXCHECK | |
630 # undef getgroups | |
631 # if HAVE_RAW_DECL_GETGROUPS | |
632 _GL_WARN_ON_USE (getgroups, "getgroups is unportable - " | |
633 "use gnulib module getgroups for portability"); | |
634 # endif | |
635 #endif | |
636 | |
637 | |
638 #if @GNULIB_GETHOSTNAME@ | |
639 /* Return the standard host name of the machine. | |
640 WARNING! The host name may or may not be fully qualified. | |
641 | |
642 Put up to LEN bytes of the host name into NAME. | |
643 Null terminate it if the name is shorter than LEN. | |
644 If the host name is longer than LEN, set errno = EINVAL and return -1. | |
645 Return 0 if successful, otherwise set errno and return -1. */ | |
646 # if @UNISTD_H_HAVE_WINSOCK2_H@ | |
647 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
648 # undef gethostname | |
649 # define gethostname rpl_gethostname | |
650 # endif | |
651 _GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len) | |
652 _GL_ARG_NONNULL ((1))); | |
653 _GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len)); | |
654 # else | |
655 # if !@HAVE_GETHOSTNAME@ | |
656 _GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len) | |
657 _GL_ARG_NONNULL ((1))); | |
658 # endif | |
659 /* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second | |
660 parameter is | |
661 int len. */ | |
662 _GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len)); | |
663 # endif | |
664 _GL_CXXALIASWARN (gethostname); | |
665 #elif @UNISTD_H_HAVE_WINSOCK2_H@ | |
666 # undef gethostname | |
667 # define gethostname gethostname_used_without_requesting_gnulib_module_gethostname | |
668 #elif defined GNULIB_POSIXCHECK | |
669 # undef gethostname | |
670 # if HAVE_RAW_DECL_GETHOSTNAME | |
671 _GL_WARN_ON_USE (gethostname, "gethostname is unportable - " | |
672 "use gnulib module gethostname for portability"); | |
673 # endif | |
674 #endif | |
675 | |
676 | |
677 #if @GNULIB_GETLOGIN@ | |
678 /* Returns the user's login name, or NULL if it cannot be found. Upon error, | |
679 returns NULL with errno set. | |
680 | |
681 See <http://www.opengroup.org/susv3xsh/getlogin.html>. | |
682 | |
683 Most programs don't need to use this function, because the information is | |
684 available through environment variables: | |
685 ${LOGNAME-$USER} on Unix platforms, | |
686 $USERNAME on native Windows platforms. | |
687 */ | |
688 # if !@HAVE_GETLOGIN@ | |
689 _GL_FUNCDECL_SYS (getlogin, char *, (void)); | |
690 # endif | |
691 _GL_CXXALIAS_SYS (getlogin, char *, (void)); | |
692 _GL_CXXALIASWARN (getlogin); | |
693 #elif defined GNULIB_POSIXCHECK | |
694 # undef getlogin | |
695 # if HAVE_RAW_DECL_GETLOGIN | |
696 _GL_WARN_ON_USE (getlogin, "getlogin is unportable - " | |
697 "use gnulib module getlogin for portability"); | |
698 # endif | |
699 #endif | |
700 | |
701 | |
702 #if @GNULIB_GETLOGIN_R@ | |
703 /* Copies the user's login name to NAME. | |
704 The array pointed to by NAME has room for SIZE bytes. | |
705 | |
706 Returns 0 if successful. Upon error, an error number is returned, or -1 in | |
707 the case that the login name cannot be found but no specific error is | |
708 provided (this case is hopefully rare but is left open by the POSIX spec). | |
709 | |
710 See <http://www.opengroup.org/susv3xsh/getlogin.html>. | |
711 | |
712 Most programs don't need to use this function, because the information is | |
713 available through environment variables: | |
714 ${LOGNAME-$USER} on Unix platforms, | |
715 $USERNAME on native Windows platforms. | |
716 */ | |
717 # if @REPLACE_GETLOGIN_R@ | |
718 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
719 # define getlogin_r rpl_getlogin_r | |
720 # endif | |
721 _GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size) | |
722 _GL_ARG_NONNULL ((1))); | |
723 _GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size)); | |
724 # else | |
725 # if !@HAVE_DECL_GETLOGIN_R@ | |
726 _GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size) | |
727 _GL_ARG_NONNULL ((1))); | |
728 # endif | |
729 /* Need to cast, because on Solaris 10 systems, the second argument is | |
730 int size. */ | |
731 _GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size)); | |
732 # endif | |
733 _GL_CXXALIASWARN (getlogin_r); | |
734 #elif defined GNULIB_POSIXCHECK | |
735 # undef getlogin_r | |
736 # if HAVE_RAW_DECL_GETLOGIN_R | |
737 _GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - " | |
738 "use gnulib module getlogin_r for portability"); | |
739 # endif | |
740 #endif | |
741 | |
742 | |
743 #if @GNULIB_GETPAGESIZE@ | |
744 # if @REPLACE_GETPAGESIZE@ | |
745 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
746 # define getpagesize rpl_getpagesize | |
747 # endif | |
748 _GL_FUNCDECL_RPL (getpagesize, int, (void)); | |
749 _GL_CXXALIAS_RPL (getpagesize, int, (void)); | |
750 # else | |
751 # if !@HAVE_GETPAGESIZE@ | |
752 # if !defined getpagesize | |
753 /* This is for POSIX systems. */ | |
754 # if !defined _gl_getpagesize && defined _SC_PAGESIZE | |
755 # if ! (defined __VMS && __VMS_VER < 70000000) | |
756 # define _gl_getpagesize() sysconf (_SC_PAGESIZE) | |
757 # endif | |
758 # endif | |
759 /* This is for older VMS. */ | |
760 # if !defined _gl_getpagesize && defined __VMS | |
761 # ifdef __ALPHA | |
762 # define _gl_getpagesize() 8192 | |
763 # else | |
764 # define _gl_getpagesize() 512 | |
765 # endif | |
766 # endif | |
767 /* This is for BeOS. */ | |
768 # if !defined _gl_getpagesize && @HAVE_OS_H@ | |
769 # include <OS.h> | |
770 # if defined B_PAGE_SIZE | |
771 # define _gl_getpagesize() B_PAGE_SIZE | |
772 # endif | |
773 # endif | |
774 /* This is for AmigaOS4.0. */ | |
775 # if !defined _gl_getpagesize && defined __amigaos4__ | |
776 # define _gl_getpagesize() 2048 | |
777 # endif | |
778 /* This is for older Unix systems. */ | |
779 # if !defined _gl_getpagesize && @HAVE_SYS_PARAM_H@ | |
780 # include <sys/param.h> | |
781 # ifdef EXEC_PAGESIZE | |
782 # define _gl_getpagesize() EXEC_PAGESIZE | |
783 # else | |
784 # ifdef NBPG | |
785 # ifndef CLSIZE | |
786 # define CLSIZE 1 | |
787 # endif | |
788 # define _gl_getpagesize() (NBPG * CLSIZE) | |
789 # else | |
790 # ifdef NBPC | |
791 # define _gl_getpagesize() NBPC | |
792 # endif | |
793 # endif | |
794 # endif | |
795 # endif | |
796 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
797 # define getpagesize() _gl_getpagesize () | |
798 # else | |
799 static inline int | |
800 getpagesize () | |
801 { | |
802 return _gl_getpagesize (); | |
803 } | |
804 # endif | |
805 # endif | |
806 # endif | |
807 /* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */ | |
808 _GL_CXXALIAS_SYS_CAST (getpagesize, int, (void)); | |
809 # endif | |
810 # if @HAVE_DECL_GETPAGESIZE@ | |
811 _GL_CXXALIASWARN (getpagesize); | |
812 # endif | |
813 #elif defined GNULIB_POSIXCHECK | |
814 # undef getpagesize | |
815 # if HAVE_RAW_DECL_GETPAGESIZE | |
816 _GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - " | |
817 "use gnulib module getpagesize for portability"); | |
818 # endif | |
819 #endif | |
820 | |
821 | |
822 #if @GNULIB_GETUSERSHELL@ | |
823 /* Return the next valid login shell on the system, or NULL when the end of | |
824 the list has been reached. */ | |
825 # if !@HAVE_DECL_GETUSERSHELL@ | |
826 _GL_FUNCDECL_SYS (getusershell, char *, (void)); | |
827 # endif | |
828 _GL_CXXALIAS_SYS (getusershell, char *, (void)); | |
829 _GL_CXXALIASWARN (getusershell); | |
830 #elif defined GNULIB_POSIXCHECK | |
831 # undef getusershell | |
832 # if HAVE_RAW_DECL_GETUSERSHELL | |
833 _GL_WARN_ON_USE (getusershell, "getusershell is unportable - " | |
834 "use gnulib module getusershell for portability"); | |
835 # endif | |
836 #endif | |
837 | |
838 #if @GNULIB_GETUSERSHELL@ | |
839 /* Rewind to pointer that is advanced at each getusershell() call. */ | |
840 # if !@HAVE_DECL_GETUSERSHELL@ | |
841 _GL_FUNCDECL_SYS (setusershell, void, (void)); | |
842 # endif | |
843 _GL_CXXALIAS_SYS (setusershell, void, (void)); | |
844 _GL_CXXALIASWARN (setusershell); | |
845 #elif defined GNULIB_POSIXCHECK | |
846 # undef setusershell | |
847 # if HAVE_RAW_DECL_SETUSERSHELL | |
848 _GL_WARN_ON_USE (setusershell, "setusershell is unportable - " | |
849 "use gnulib module getusershell for portability"); | |
850 # endif | |
851 #endif | |
852 | |
853 #if @GNULIB_GETUSERSHELL@ | |
854 /* Free the pointer that is advanced at each getusershell() call and | |
855 associated resources. */ | |
856 # if !@HAVE_DECL_GETUSERSHELL@ | |
857 _GL_FUNCDECL_SYS (endusershell, void, (void)); | |
858 # endif | |
859 _GL_CXXALIAS_SYS (endusershell, void, (void)); | |
860 _GL_CXXALIASWARN (endusershell); | |
861 #elif defined GNULIB_POSIXCHECK | |
862 # undef endusershell | |
863 # if HAVE_RAW_DECL_ENDUSERSHELL | |
864 _GL_WARN_ON_USE (endusershell, "endusershell is unportable - " | |
865 "use gnulib module getusershell for portability"); | |
866 # endif | |
867 #endif | |
868 | |
869 | |
870 #if @GNULIB_LCHOWN@ | |
871 /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE | |
872 to GID (if GID is not -1). Do not follow symbolic links. | |
873 Return 0 if successful, otherwise -1 and errno set. | |
874 See the POSIX:2001 specification | |
875 <http://www.opengroup.org/susv3xsh/lchown.html>. */ | |
876 # if @REPLACE_LCHOWN@ | |
877 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
878 # undef lchown | |
879 # define lchown rpl_lchown | |
880 # endif | |
881 _GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group) | |
882 _GL_ARG_NONNULL ((1))); | |
883 _GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)); | |
884 # else | |
885 # if !@HAVE_LCHOWN@ | |
886 _GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group) | |
887 _GL_ARG_NONNULL ((1))); | |
888 # endif | |
889 _GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)); | |
890 # endif | |
891 _GL_CXXALIASWARN (lchown); | |
892 #elif defined GNULIB_POSIXCHECK | |
893 # undef lchown | |
894 # if HAVE_RAW_DECL_LCHOWN | |
895 _GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - " | |
896 "use gnulib module lchown for portability"); | |
897 # endif | |
898 #endif | |
899 | |
900 | |
901 #if @GNULIB_LINK@ | |
902 /* Create a new hard link for an existing file. | |
903 Return 0 if successful, otherwise -1 and errno set. | |
904 See POSIX:2001 specification | |
905 <http://www.opengroup.org/susv3xsh/link.html>. */ | |
906 # if @REPLACE_LINK@ | |
907 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
908 # define link rpl_link | |
909 # endif | |
910 _GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2) | |
911 _GL_ARG_NONNULL ((1, 2))); | |
912 _GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2)); | |
913 # else | |
914 # if !@HAVE_LINK@ | |
915 _GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2) | |
916 _GL_ARG_NONNULL ((1, 2))); | |
917 # endif | |
918 _GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2)); | |
919 # endif | |
920 _GL_CXXALIASWARN (link); | |
921 #elif defined GNULIB_POSIXCHECK | |
922 # undef link | |
923 # if HAVE_RAW_DECL_LINK | |
924 _GL_WARN_ON_USE (link, "link is unportable - " | |
925 "use gnulib module link for portability"); | |
926 # endif | |
927 #endif | |
928 | |
929 | |
930 #if @GNULIB_LINKAT@ | |
931 /* Create a new hard link for an existing file, relative to two | |
932 directories. FLAG controls whether symlinks are followed. | |
933 Return 0 if successful, otherwise -1 and errno set. */ | |
934 # if @REPLACE_LINKAT@ | |
935 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
936 # undef linkat | |
937 # define linkat rpl_linkat | |
938 # endif | |
939 _GL_FUNCDECL_RPL (linkat, int, | |
940 (int fd1, const char *path1, int fd2, const char *path2, | |
941 int flag) | |
942 _GL_ARG_NONNULL ((2, 4))); | |
943 _GL_CXXALIAS_RPL (linkat, int, | |
944 (int fd1, const char *path1, int fd2, const char *path2, | |
945 int flag)); | |
946 # else | |
947 # if !@HAVE_LINKAT@ | |
948 _GL_FUNCDECL_SYS (linkat, int, | |
949 (int fd1, const char *path1, int fd2, const char *path2, | |
950 int flag) | |
951 _GL_ARG_NONNULL ((2, 4))); | |
952 # endif | |
953 _GL_CXXALIAS_SYS (linkat, int, | |
954 (int fd1, const char *path1, int fd2, const char *path2, | |
955 int flag)); | |
956 # endif | |
957 _GL_CXXALIASWARN (linkat); | |
958 #elif defined GNULIB_POSIXCHECK | |
959 # undef linkat | |
960 # if HAVE_RAW_DECL_LINKAT | |
961 _GL_WARN_ON_USE (linkat, "linkat is unportable - " | |
962 "use gnulib module linkat for portability"); | |
963 # endif | |
964 #endif | |
965 | |
966 | |
967 #if @GNULIB_LSEEK@ | |
968 /* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END. | |
969 Return the new offset if successful, otherwise -1 and errno set. | |
970 See the POSIX:2001 specification | |
971 <http://www.opengroup.org/susv3xsh/lseek.html>. */ | |
972 # if @REPLACE_LSEEK@ | |
973 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
974 # define lseek rpl_lseek | |
975 # endif | |
976 _GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence)); | |
977 _GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence)); | |
978 # else | |
979 _GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence)); | |
980 # endif | |
981 _GL_CXXALIASWARN (lseek); | |
982 #elif defined GNULIB_POSIXCHECK | |
983 # undef lseek | |
984 # if HAVE_RAW_DECL_LSEEK | |
985 _GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some " | |
986 "systems - use gnulib module lseek for portability"); | |
987 # endif | |
988 #endif | |
989 | |
990 | |
991 #if @GNULIB_PIPE@ | |
992 /* Create a pipe, defaulting to O_BINARY mode. | |
993 Store the read-end as fd[0] and the write-end as fd[1]. | |
994 Return 0 upon success, or -1 with errno set upon failure. */ | |
995 # if !@HAVE_PIPE@ | |
996 _GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1))); | |
997 # endif | |
998 _GL_CXXALIAS_SYS (pipe, int, (int fd[2])); | |
999 _GL_CXXALIASWARN (pipe); | |
1000 #elif defined GNULIB_POSIXCHECK | |
1001 # undef pipe | |
1002 # if HAVE_RAW_DECL_PIPE | |
1003 _GL_WARN_ON_USE (pipe, "pipe is unportable - " | |
1004 "use gnulib module pipe-posix for portability"); | |
1005 # endif | |
1006 #endif | |
1007 | |
1008 | |
1009 #if @GNULIB_PIPE2@ | |
1010 /* Create a pipe, applying the given flags when opening the read-end of the | |
1011 pipe and the write-end of the pipe. | |
1012 The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>) | |
1013 and O_TEXT, O_BINARY (defined in "binary-io.h"). | |
1014 Store the read-end as fd[0] and the write-end as fd[1]. | |
1015 Return 0 upon success, or -1 with errno set upon failure. | |
1016 See also the Linux man page at | |
1017 <http://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>. */ | |
1018 # if @HAVE_PIPE2@ | |
1019 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
1020 # define pipe2 rpl_pipe2 | |
1021 # endif | |
1022 _GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); | |
1023 _GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags)); | |
1024 # else | |
1025 _GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); | |
1026 _GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags)); | |
1027 # endif | |
1028 _GL_CXXALIASWARN (pipe2); | |
1029 #elif defined GNULIB_POSIXCHECK | |
1030 # undef pipe2 | |
1031 # if HAVE_RAW_DECL_PIPE2 | |
1032 _GL_WARN_ON_USE (pipe2, "pipe2 is unportable - " | |
1033 "use gnulib module pipe2 for portability"); | |
1034 # endif | |
1035 #endif | |
1036 | |
1037 | |
1038 #if @GNULIB_PREAD@ | |
1039 /* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET. | |
1040 Return the number of bytes placed into BUF if successful, otherwise | |
1041 set errno and return -1. 0 indicates EOF. See the POSIX:2001 | |
1042 specification <http://www.opengroup.org/susv3xsh/pread.html>. */ | |
1043 # if @REPLACE_PREAD@ | |
1044 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
1045 # define pread rpl_pread | |
1046 # endif | |
1047 _GL_FUNCDECL_RPL (pread, ssize_t, | |
1048 (int fd, void *buf, size_t bufsize, off_t offset) | |
1049 _GL_ARG_NONNULL ((2))); | |
1050 _GL_CXXALIAS_RPL (pread, ssize_t, | |
1051 (int fd, void *buf, size_t bufsize, off_t offset)); | |
1052 # else | |
1053 # if !@HAVE_PREAD@ | |
1054 _GL_FUNCDECL_SYS (pread, ssize_t, | |
1055 (int fd, void *buf, size_t bufsize, off_t offset) | |
1056 _GL_ARG_NONNULL ((2))); | |
1057 # endif | |
1058 _GL_CXXALIAS_SYS (pread, ssize_t, | |
1059 (int fd, void *buf, size_t bufsize, off_t offset)); | |
1060 # endif | |
1061 _GL_CXXALIASWARN (pread); | |
1062 #elif defined GNULIB_POSIXCHECK | |
1063 # undef pread | |
1064 # if HAVE_RAW_DECL_PREAD | |
1065 _GL_WARN_ON_USE (pread, "pread is unportable - " | |
1066 "use gnulib module pread for portability"); | |
1067 # endif | |
1068 #endif | |
1069 | |
1070 | |
1071 #if @GNULIB_PWRITE@ | |
1072 /* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET. | |
1073 Return the number of bytes written if successful, otherwise | |
1074 set errno and return -1. 0 indicates nothing written. See the | |
1075 POSIX:2001 specification | |
1076 <http://www.opengroup.org/susv3xsh/pwrite.html>. */ | |
1077 # if @REPLACE_PWRITE@ | |
1078 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
1079 # define pwrite rpl_pwrite | |
1080 # endif | |
1081 _GL_FUNCDECL_RPL (pwrite, ssize_t, | |
1082 (int fd, const void *buf, size_t bufsize, off_t offset) | |
1083 _GL_ARG_NONNULL ((2))); | |
1084 _GL_CXXALIAS_RPL (pwrite, ssize_t, | |
1085 (int fd, const void *buf, size_t bufsize, off_t offset)); | |
1086 # else | |
1087 # if !@HAVE_PWRITE@ | |
1088 _GL_FUNCDECL_SYS (pwrite, ssize_t, | |
1089 (int fd, const void *buf, size_t bufsize, off_t offset) | |
1090 _GL_ARG_NONNULL ((2))); | |
1091 # endif | |
1092 _GL_CXXALIAS_SYS (pwrite, ssize_t, | |
1093 (int fd, const void *buf, size_t bufsize, off_t offset)); | |
1094 # endif | |
1095 _GL_CXXALIASWARN (pwrite); | |
1096 #elif defined GNULIB_POSIXCHECK | |
1097 # undef pwrite | |
1098 # if HAVE_RAW_DECL_PWRITE | |
1099 _GL_WARN_ON_USE (pwrite, "pwrite is unportable - " | |
1100 "use gnulib module pwrite for portability"); | |
1101 # endif | |
1102 #endif | |
1103 | |
1104 | |
1105 #if @GNULIB_READLINK@ | |
1106 /* Read the contents of the symbolic link FILE and place the first BUFSIZE | |
1107 bytes of it into BUF. Return the number of bytes placed into BUF if | |
1108 successful, otherwise -1 and errno set. | |
1109 See the POSIX:2001 specification | |
1110 <http://www.opengroup.org/susv3xsh/readlink.html>. */ | |
1111 # if @REPLACE_READLINK@ | |
1112 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
1113 # define readlink rpl_readlink | |
1114 # endif | |
1115 _GL_FUNCDECL_RPL (readlink, ssize_t, | |
1116 (const char *file, char *buf, size_t bufsize) | |
1117 _GL_ARG_NONNULL ((1, 2))); | |
1118 _GL_CXXALIAS_RPL (readlink, ssize_t, | |
1119 (const char *file, char *buf, size_t bufsize)); | |
1120 # else | |
1121 # if !@HAVE_READLINK@ | |
1122 _GL_FUNCDECL_SYS (readlink, ssize_t, | |
1123 (const char *file, char *buf, size_t bufsize) | |
1124 _GL_ARG_NONNULL ((1, 2))); | |
1125 # endif | |
1126 _GL_CXXALIAS_SYS (readlink, ssize_t, | |
1127 (const char *file, char *buf, size_t bufsize)); | |
1128 # endif | |
1129 _GL_CXXALIASWARN (readlink); | |
1130 #elif defined GNULIB_POSIXCHECK | |
1131 # undef readlink | |
1132 # if HAVE_RAW_DECL_READLINK | |
1133 _GL_WARN_ON_USE (readlink, "readlink is unportable - " | |
1134 "use gnulib module readlink for portability"); | |
1135 # endif | |
1136 #endif | |
1137 | |
1138 | |
1139 #if @GNULIB_READLINKAT@ | |
1140 # if !@HAVE_READLINKAT@ | |
1141 _GL_FUNCDECL_SYS (readlinkat, ssize_t, | |
1142 (int fd, char const *file, char *buf, size_t len) | |
1143 _GL_ARG_NONNULL ((2, 3))); | |
1144 # endif | |
1145 _GL_CXXALIAS_SYS (readlinkat, ssize_t, | |
1146 (int fd, char const *file, char *buf, size_t len)); | |
1147 _GL_CXXALIASWARN (readlinkat); | |
1148 #elif defined GNULIB_POSIXCHECK | |
1149 # undef readlinkat | |
1150 # if HAVE_RAW_DECL_READLINKAT | |
1151 _GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - " | |
1152 "use gnulib module readlinkat for portability"); | |
1153 # endif | |
1154 #endif | |
1155 | |
1156 | |
1157 #if @GNULIB_RMDIR@ | |
1158 /* Remove the directory DIR. */ | |
1159 # if @REPLACE_RMDIR@ | |
1160 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
1161 # define rmdir rpl_rmdir | |
1162 # endif | |
1163 _GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1))); | |
1164 _GL_CXXALIAS_RPL (rmdir, int, (char const *name)); | |
1165 # else | |
1166 _GL_CXXALIAS_SYS (rmdir, int, (char const *name)); | |
1167 # endif | |
1168 _GL_CXXALIASWARN (rmdir); | |
1169 #elif defined GNULIB_POSIXCHECK | |
1170 # undef rmdir | |
1171 # if HAVE_RAW_DECL_RMDIR | |
1172 _GL_WARN_ON_USE (rmdir, "rmdir is unportable - " | |
1173 "use gnulib module rmdir for portability"); | |
1174 # endif | |
1175 #endif | |
1176 | |
1177 | |
1178 #if @GNULIB_SLEEP@ | |
1179 /* Pause the execution of the current thread for N seconds. | |
1180 Returns the number of seconds left to sleep. | |
1181 See the POSIX:2001 specification | |
1182 <http://www.opengroup.org/susv3xsh/sleep.html>. */ | |
1183 # if @REPLACE_SLEEP@ | |
1184 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
1185 # undef sleep | |
1186 # define sleep rpl_sleep | |
1187 # endif | |
1188 _GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n)); | |
1189 _GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n)); | |
1190 # else | |
1191 # if !@HAVE_SLEEP@ | |
1192 _GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n)); | |
1193 # endif | |
1194 _GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n)); | |
1195 # endif | |
1196 _GL_CXXALIASWARN (sleep); | |
1197 #elif defined GNULIB_POSIXCHECK | |
1198 # undef sleep | |
1199 # if HAVE_RAW_DECL_SLEEP | |
1200 _GL_WARN_ON_USE (sleep, "sleep is unportable - " | |
1201 "use gnulib module sleep for portability"); | |
1202 # endif | |
1203 #endif | |
1204 | |
1205 | |
1206 #if @GNULIB_SYMLINK@ | |
1207 # if @REPLACE_SYMLINK@ | |
1208 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
1209 # undef symlink | |
1210 # define symlink rpl_symlink | |
1211 # endif | |
1212 _GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file) | |
1213 _GL_ARG_NONNULL ((1, 2))); | |
1214 _GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file)); | |
1215 # else | |
1216 # if !@HAVE_SYMLINK@ | |
1217 _GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file) | |
1218 _GL_ARG_NONNULL ((1, 2))); | |
1219 # endif | |
1220 _GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file)); | |
1221 # endif | |
1222 _GL_CXXALIASWARN (symlink); | |
1223 #elif defined GNULIB_POSIXCHECK | |
1224 # undef symlink | |
1225 # if HAVE_RAW_DECL_SYMLINK | |
1226 _GL_WARN_ON_USE (symlink, "symlink is not portable - " | |
1227 "use gnulib module symlink for portability"); | |
1228 # endif | |
1229 #endif | |
1230 | |
1231 | |
1232 #if @GNULIB_SYMLINKAT@ | |
1233 # if !@HAVE_SYMLINKAT@ | |
1234 _GL_FUNCDECL_SYS (symlinkat, int, | |
1235 (char const *contents, int fd, char const *file) | |
1236 _GL_ARG_NONNULL ((1, 3))); | |
1237 # endif | |
1238 _GL_CXXALIAS_SYS (symlinkat, int, | |
1239 (char const *contents, int fd, char const *file)); | |
1240 _GL_CXXALIASWARN (symlinkat); | |
1241 #elif defined GNULIB_POSIXCHECK | |
1242 # undef symlinkat | |
1243 # if HAVE_RAW_DECL_SYMLINKAT | |
1244 _GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - " | |
1245 "use gnulib module symlinkat for portability"); | |
1246 # endif | |
1247 #endif | |
1248 | |
1249 | |
1250 #if @GNULIB_TTYNAME_R@ | |
1251 /* Store at most BUFLEN characters of the pathname of the terminal FD is | |
1252 open on in BUF. Return 0 on success, otherwise an error number. */ | |
1253 # if @REPLACE_TTYNAME_R@ | |
1254 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
1255 # undef ttyname_r | |
1256 # define ttyname_r rpl_ttyname_r | |
1257 # endif | |
1258 _GL_FUNCDECL_RPL (ttyname_r, int, | |
1259 (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); | |
1260 _GL_CXXALIAS_RPL (ttyname_r, int, | |
1261 (int fd, char *buf, size_t buflen)); | |
1262 # else | |
1263 # if !@HAVE_DECL_TTYNAME_R@ | |
1264 _GL_FUNCDECL_SYS (ttyname_r, int, | |
1265 (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); | |
1266 # endif | |
1267 _GL_CXXALIAS_SYS (ttyname_r, int, | |
1268 (int fd, char *buf, size_t buflen)); | |
1269 # endif | |
1270 _GL_CXXALIASWARN (ttyname_r); | |
1271 #elif defined GNULIB_POSIXCHECK | |
1272 # undef ttyname_r | |
1273 # if HAVE_RAW_DECL_TTYNAME_R | |
1274 _GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - " | |
1275 "use gnulib module ttyname_r for portability"); | |
1276 # endif | |
1277 #endif | |
1278 | |
1279 | |
1280 #if @GNULIB_UNLINK@ | |
1281 # if @REPLACE_UNLINK@ | |
1282 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
1283 # undef unlink | |
1284 # define unlink rpl_unlink | |
1285 # endif | |
1286 _GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1))); | |
1287 _GL_CXXALIAS_RPL (unlink, int, (char const *file)); | |
1288 # else | |
1289 _GL_CXXALIAS_SYS (unlink, int, (char const *file)); | |
1290 # endif | |
1291 _GL_CXXALIASWARN (unlink); | |
1292 #elif defined GNULIB_POSIXCHECK | |
1293 # undef unlink | |
1294 # if HAVE_RAW_DECL_UNLINK | |
1295 _GL_WARN_ON_USE (unlink, "unlink is not portable - " | |
1296 "use gnulib module unlink for portability"); | |
1297 # endif | |
1298 #endif | |
1299 | |
1300 | |
1301 #if @GNULIB_UNLINKAT@ | |
1302 # if @REPLACE_UNLINKAT@ | |
1303 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
1304 # undef unlinkat | |
1305 # define unlinkat rpl_unlinkat | |
1306 # endif | |
1307 _GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag) | |
1308 _GL_ARG_NONNULL ((2))); | |
1309 _GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag)); | |
1310 # else | |
1311 # if !@HAVE_UNLINKAT@ | |
1312 _GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag) | |
1313 _GL_ARG_NONNULL ((2))); | |
1314 # endif | |
1315 _GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag)); | |
1316 # endif | |
1317 _GL_CXXALIASWARN (unlinkat); | |
1318 #elif defined GNULIB_POSIXCHECK | |
1319 # undef unlinkat | |
1320 # if HAVE_RAW_DECL_UNLINKAT | |
1321 _GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - " | |
1322 "use gnulib module openat for portability"); | |
1323 # endif | |
1324 #endif | |
1325 | |
1326 | |
1327 #if @GNULIB_USLEEP@ | |
1328 /* Pause the execution of the current thread for N microseconds. | |
1329 Returns 0 on completion, or -1 on range error. | |
1330 See the POSIX:2001 specification | |
1331 <http://www.opengroup.org/susv3xsh/sleep.html>. */ | |
1332 # if @REPLACE_USLEEP@ | |
1333 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
1334 # undef usleep | |
1335 # define usleep rpl_usleep | |
1336 # endif | |
1337 _GL_FUNCDECL_RPL (usleep, int, (useconds_t n)); | |
1338 _GL_CXXALIAS_RPL (usleep, int, (useconds_t n)); | |
1339 # else | |
1340 # if !@HAVE_USLEEP@ | |
1341 _GL_FUNCDECL_SYS (usleep, int, (useconds_t n)); | |
1342 # endif | |
1343 _GL_CXXALIAS_SYS (usleep, int, (useconds_t n)); | |
1344 # endif | |
1345 _GL_CXXALIASWARN (usleep); | |
1346 #elif defined GNULIB_POSIXCHECK | |
1347 # undef usleep | |
1348 # if HAVE_RAW_DECL_USLEEP | |
1349 _GL_WARN_ON_USE (usleep, "usleep is unportable - " | |
1350 "use gnulib module usleep for portability"); | |
1351 # endif | |
1352 #endif | |
1353 | |
1354 | |
1355 #if @GNULIB_WRITE@ | |
1356 /* Write up to COUNT bytes starting at BUF to file descriptor FD. | |
1357 See the POSIX:2001 specification | |
1358 <http://www.opengroup.org/susv3xsh/write.html>. */ | |
1359 # if @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@ | |
1360 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
1361 # undef write | |
1362 # define write rpl_write | |
1363 # endif | |
1364 _GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count) | |
1365 _GL_ARG_NONNULL ((2))); | |
1366 _GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count)); | |
1367 # else | |
1368 /* Need to cast, because on mingw, the third parameter is | |
1369 unsigned int count | |
1370 and the return type is 'int'. */ | |
1371 _GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count)); | |
1372 # endif | |
1373 _GL_CXXALIASWARN (write); | |
1374 #endif | |
1375 | |
1376 | |
1377 #endif /* _GL_UNISTD_H */ | |
1378 #endif /* _GL_UNISTD_H */ |