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