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 _@GUARD_PREFIX@_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 _@GUARD_PREFIX@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
55: #define _@GUARD_PREFIX@_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_READ@ || @GNULIB_WRITE@ \
101: || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \
102: || @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK)
103: /* Get ssize_t. */
104: # include <sys/types.h>
105: #endif
106:
107: /* Get getopt(), optarg, optind, opterr, optopt.
108: But avoid namespace pollution on glibc systems. */
109: #if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT
110: # include <getopt.h>
111: #endif
112:
113: /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
114:
115: /* The definition of _GL_ARG_NONNULL is copied here. */
116:
117: /* The definition of _GL_WARN_ON_USE is copied here. */
118:
119:
120: /* Hide some function declarations from <winsock2.h>. */
121:
122: #if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@
123: # if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
124: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
125: # undef socket
126: # define socket socket_used_without_including_sys_socket_h
127: # undef connect
128: # define connect connect_used_without_including_sys_socket_h
129: # undef accept
130: # define accept accept_used_without_including_sys_socket_h
131: # undef bind
132: # define bind bind_used_without_including_sys_socket_h
133: # undef getpeername
134: # define getpeername getpeername_used_without_including_sys_socket_h
135: # undef getsockname
136: # define getsockname getsockname_used_without_including_sys_socket_h
137: # undef getsockopt
138: # define getsockopt getsockopt_used_without_including_sys_socket_h
139: # undef listen
140: # define listen listen_used_without_including_sys_socket_h
141: # undef recv
142: # define recv recv_used_without_including_sys_socket_h
143: # undef send
144: # define send send_used_without_including_sys_socket_h
145: # undef recvfrom
146: # define recvfrom recvfrom_used_without_including_sys_socket_h
147: # undef sendto
148: # define sendto sendto_used_without_including_sys_socket_h
149: # undef setsockopt
150: # define setsockopt setsockopt_used_without_including_sys_socket_h
151: # undef shutdown
152: # define shutdown shutdown_used_without_including_sys_socket_h
153: # else
154: _GL_WARN_ON_USE (socket,
155: "socket() used without including <sys/socket.h>");
156: _GL_WARN_ON_USE (connect,
157: "connect() used without including <sys/socket.h>");
158: _GL_WARN_ON_USE (accept,
159: "accept() used without including <sys/socket.h>");
160: _GL_WARN_ON_USE (bind,
161: "bind() used without including <sys/socket.h>");
162: _GL_WARN_ON_USE (getpeername,
163: "getpeername() used without including <sys/socket.h>");
164: _GL_WARN_ON_USE (getsockname,
165: "getsockname() used without including <sys/socket.h>");
166: _GL_WARN_ON_USE (getsockopt,
167: "getsockopt() used without including <sys/socket.h>");
168: _GL_WARN_ON_USE (listen,
169: "listen() used without including <sys/socket.h>");
170: _GL_WARN_ON_USE (recv,
171: "recv() used without including <sys/socket.h>");
172: _GL_WARN_ON_USE (send,
173: "send() used without including <sys/socket.h>");
174: _GL_WARN_ON_USE (recvfrom,
175: "recvfrom() used without including <sys/socket.h>");
176: _GL_WARN_ON_USE (sendto,
177: "sendto() used without including <sys/socket.h>");
178: _GL_WARN_ON_USE (setsockopt,
179: "setsockopt() used without including <sys/socket.h>");
180: _GL_WARN_ON_USE (shutdown,
181: "shutdown() used without including <sys/socket.h>");
182: # endif
183: # endif
184: # if !defined _@GUARD_PREFIX@_SYS_SELECT_H
185: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
186: # undef select
187: # define select select_used_without_including_sys_select_h
188: # else
189: _GL_WARN_ON_USE (select,
190: "select() used without including <sys/select.h>");
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: # if !GNULIB_defined_getpagesize_function
800: static inline int
801: getpagesize ()
802: {
803: return _gl_getpagesize ();
804: }
805: # define GNULIB_defined_getpagesize_function 1
806: # endif
807: # endif
808: # endif
809: # endif
810: /* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */
811: _GL_CXXALIAS_SYS_CAST (getpagesize, int, (void));
812: # endif
813: # if @HAVE_DECL_GETPAGESIZE@
814: _GL_CXXALIASWARN (getpagesize);
815: # endif
816: #elif defined GNULIB_POSIXCHECK
817: # undef getpagesize
818: # if HAVE_RAW_DECL_GETPAGESIZE
819: _GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - "
820: "use gnulib module getpagesize for portability");
821: # endif
822: #endif
823:
824:
825: #if @GNULIB_GETUSERSHELL@
826: /* Return the next valid login shell on the system, or NULL when the end of
827: the list has been reached. */
828: # if !@HAVE_DECL_GETUSERSHELL@
829: _GL_FUNCDECL_SYS (getusershell, char *, (void));
830: # endif
831: _GL_CXXALIAS_SYS (getusershell, char *, (void));
832: _GL_CXXALIASWARN (getusershell);
833: #elif defined GNULIB_POSIXCHECK
834: # undef getusershell
835: # if HAVE_RAW_DECL_GETUSERSHELL
836: _GL_WARN_ON_USE (getusershell, "getusershell is unportable - "
837: "use gnulib module getusershell for portability");
838: # endif
839: #endif
840:
841: #if @GNULIB_GETUSERSHELL@
842: /* Rewind to pointer that is advanced at each getusershell() call. */
843: # if !@HAVE_DECL_GETUSERSHELL@
844: _GL_FUNCDECL_SYS (setusershell, void, (void));
845: # endif
846: _GL_CXXALIAS_SYS (setusershell, void, (void));
847: _GL_CXXALIASWARN (setusershell);
848: #elif defined GNULIB_POSIXCHECK
849: # undef setusershell
850: # if HAVE_RAW_DECL_SETUSERSHELL
851: _GL_WARN_ON_USE (setusershell, "setusershell is unportable - "
852: "use gnulib module getusershell for portability");
853: # endif
854: #endif
855:
856: #if @GNULIB_GETUSERSHELL@
857: /* Free the pointer that is advanced at each getusershell() call and
858: associated resources. */
859: # if !@HAVE_DECL_GETUSERSHELL@
860: _GL_FUNCDECL_SYS (endusershell, void, (void));
861: # endif
862: _GL_CXXALIAS_SYS (endusershell, void, (void));
863: _GL_CXXALIASWARN (endusershell);
864: #elif defined GNULIB_POSIXCHECK
865: # undef endusershell
866: # if HAVE_RAW_DECL_ENDUSERSHELL
867: _GL_WARN_ON_USE (endusershell, "endusershell is unportable - "
868: "use gnulib module getusershell for portability");
869: # endif
870: #endif
871:
872:
873: #if @GNULIB_GROUP_MEMBER@
874: /* Determine whether group id is in calling user's group list. */
875: # if !@HAVE_GROUP_MEMBER@
876: _GL_FUNCDECL_SYS (group_member, int, (gid_t gid));
877: # endif
878: _GL_CXXALIAS_SYS (group_member, int, (gid_t gid));
879: _GL_CXXALIASWARN (group_member);
880: #elif defined GNULIB_POSIXCHECK
881: # undef group_member
882: # if HAVE_RAW_DECL_GROUP_MEMBER
883: _GL_WARN_ON_USE (group_member, "group_member is unportable - "
884: "use gnulib module group-member for portability");
885: # endif
886: #endif
887:
888:
889: #if @GNULIB_LCHOWN@
890: /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
891: to GID (if GID is not -1). Do not follow symbolic links.
892: Return 0 if successful, otherwise -1 and errno set.
893: See the POSIX:2001 specification
894: <http://www.opengroup.org/susv3xsh/lchown.html>. */
895: # if @REPLACE_LCHOWN@
896: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
897: # undef lchown
898: # define lchown rpl_lchown
899: # endif
900: _GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)
901: _GL_ARG_NONNULL ((1)));
902: _GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group));
903: # else
904: # if !@HAVE_LCHOWN@
905: _GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)
906: _GL_ARG_NONNULL ((1)));
907: # endif
908: _GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group));
909: # endif
910: _GL_CXXALIASWARN (lchown);
911: #elif defined GNULIB_POSIXCHECK
912: # undef lchown
913: # if HAVE_RAW_DECL_LCHOWN
914: _GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - "
915: "use gnulib module lchown for portability");
916: # endif
917: #endif
918:
919:
920: #if @GNULIB_LINK@
921: /* Create a new hard link for an existing file.
922: Return 0 if successful, otherwise -1 and errno set.
923: See POSIX:2001 specification
924: <http://www.opengroup.org/susv3xsh/link.html>. */
925: # if @REPLACE_LINK@
926: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
927: # define link rpl_link
928: # endif
929: _GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2)
930: _GL_ARG_NONNULL ((1, 2)));
931: _GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2));
932: # else
933: # if !@HAVE_LINK@
934: _GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2)
935: _GL_ARG_NONNULL ((1, 2)));
936: # endif
937: _GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2));
938: # endif
939: _GL_CXXALIASWARN (link);
940: #elif defined GNULIB_POSIXCHECK
941: # undef link
942: # if HAVE_RAW_DECL_LINK
943: _GL_WARN_ON_USE (link, "link is unportable - "
944: "use gnulib module link for portability");
945: # endif
946: #endif
947:
948:
949: #if @GNULIB_LINKAT@
950: /* Create a new hard link for an existing file, relative to two
951: directories. FLAG controls whether symlinks are followed.
952: Return 0 if successful, otherwise -1 and errno set. */
953: # if @REPLACE_LINKAT@
954: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
955: # undef linkat
956: # define linkat rpl_linkat
957: # endif
958: _GL_FUNCDECL_RPL (linkat, int,
959: (int fd1, const char *path1, int fd2, const char *path2,
960: int flag)
961: _GL_ARG_NONNULL ((2, 4)));
962: _GL_CXXALIAS_RPL (linkat, int,
963: (int fd1, const char *path1, int fd2, const char *path2,
964: int flag));
965: # else
966: # if !@HAVE_LINKAT@
967: _GL_FUNCDECL_SYS (linkat, int,
968: (int fd1, const char *path1, int fd2, const char *path2,
969: int flag)
970: _GL_ARG_NONNULL ((2, 4)));
971: # endif
972: _GL_CXXALIAS_SYS (linkat, int,
973: (int fd1, const char *path1, int fd2, const char *path2,
974: int flag));
975: # endif
976: _GL_CXXALIASWARN (linkat);
977: #elif defined GNULIB_POSIXCHECK
978: # undef linkat
979: # if HAVE_RAW_DECL_LINKAT
980: _GL_WARN_ON_USE (linkat, "linkat is unportable - "
981: "use gnulib module linkat for portability");
982: # endif
983: #endif
984:
985:
986: #if @GNULIB_LSEEK@
987: /* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
988: Return the new offset if successful, otherwise -1 and errno set.
989: See the POSIX:2001 specification
990: <http://www.opengroup.org/susv3xsh/lseek.html>. */
991: # if @REPLACE_LSEEK@
992: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
993: # define lseek rpl_lseek
994: # endif
995: _GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence));
996: _GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence));
997: # else
998: _GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence));
999: # endif
1000: _GL_CXXALIASWARN (lseek);
1001: #elif defined GNULIB_POSIXCHECK
1002: # undef lseek
1003: # if HAVE_RAW_DECL_LSEEK
1004: _GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some "
1005: "systems - use gnulib module lseek for portability");
1006: # endif
1007: #endif
1008:
1009:
1010: #if @GNULIB_PIPE@
1011: /* Create a pipe, defaulting to O_BINARY mode.
1012: Store the read-end as fd[0] and the write-end as fd[1].
1013: Return 0 upon success, or -1 with errno set upon failure. */
1014: # if !@HAVE_PIPE@
1015: _GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1)));
1016: # endif
1017: _GL_CXXALIAS_SYS (pipe, int, (int fd[2]));
1018: _GL_CXXALIASWARN (pipe);
1019: #elif defined GNULIB_POSIXCHECK
1020: # undef pipe
1021: # if HAVE_RAW_DECL_PIPE
1022: _GL_WARN_ON_USE (pipe, "pipe is unportable - "
1023: "use gnulib module pipe-posix for portability");
1024: # endif
1025: #endif
1026:
1027:
1028: #if @GNULIB_PIPE2@
1029: /* Create a pipe, applying the given flags when opening the read-end of the
1030: pipe and the write-end of the pipe.
1031: The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
1032: and O_TEXT, O_BINARY (defined in "binary-io.h").
1033: Store the read-end as fd[0] and the write-end as fd[1].
1034: Return 0 upon success, or -1 with errno set upon failure.
1035: See also the Linux man page at
1036: <http://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>. */
1037: # if @HAVE_PIPE2@
1038: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1039: # define pipe2 rpl_pipe2
1040: # endif
1041: _GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
1042: _GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags));
1043: # else
1044: _GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
1045: _GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags));
1046: # endif
1047: _GL_CXXALIASWARN (pipe2);
1048: #elif defined GNULIB_POSIXCHECK
1049: # undef pipe2
1050: # if HAVE_RAW_DECL_PIPE2
1051: _GL_WARN_ON_USE (pipe2, "pipe2 is unportable - "
1052: "use gnulib module pipe2 for portability");
1053: # endif
1054: #endif
1055:
1056:
1057: #if @GNULIB_PREAD@
1058: /* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET.
1059: Return the number of bytes placed into BUF if successful, otherwise
1060: set errno and return -1. 0 indicates EOF. See the POSIX:2001
1061: specification <http://www.opengroup.org/susv3xsh/pread.html>. */
1062: # if @REPLACE_PREAD@
1063: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1064: # undef pread
1065: # define pread rpl_pread
1066: # endif
1067: _GL_FUNCDECL_RPL (pread, ssize_t,
1068: (int fd, void *buf, size_t bufsize, off_t offset)
1069: _GL_ARG_NONNULL ((2)));
1070: _GL_CXXALIAS_RPL (pread, ssize_t,
1071: (int fd, void *buf, size_t bufsize, off_t offset));
1072: # else
1073: # if !@HAVE_PREAD@
1074: _GL_FUNCDECL_SYS (pread, ssize_t,
1075: (int fd, void *buf, size_t bufsize, off_t offset)
1076: _GL_ARG_NONNULL ((2)));
1077: # endif
1078: _GL_CXXALIAS_SYS (pread, ssize_t,
1079: (int fd, void *buf, size_t bufsize, off_t offset));
1080: # endif
1081: _GL_CXXALIASWARN (pread);
1082: #elif defined GNULIB_POSIXCHECK
1083: # undef pread
1084: # if HAVE_RAW_DECL_PREAD
1085: _GL_WARN_ON_USE (pread, "pread is unportable - "
1086: "use gnulib module pread for portability");
1087: # endif
1088: #endif
1089:
1090:
1091: #if @GNULIB_PWRITE@
1092: /* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET.
1093: Return the number of bytes written if successful, otherwise
1094: set errno and return -1. 0 indicates nothing written. See the
1095: POSIX:2001 specification
1096: <http://www.opengroup.org/susv3xsh/pwrite.html>. */
1097: # if @REPLACE_PWRITE@
1098: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1099: # undef pwrite
1100: # define pwrite rpl_pwrite
1101: # endif
1102: _GL_FUNCDECL_RPL (pwrite, ssize_t,
1103: (int fd, const void *buf, size_t bufsize, off_t offset)
1104: _GL_ARG_NONNULL ((2)));
1105: _GL_CXXALIAS_RPL (pwrite, ssize_t,
1106: (int fd, const void *buf, size_t bufsize, off_t offset));
1107: # else
1108: # if !@HAVE_PWRITE@
1109: _GL_FUNCDECL_SYS (pwrite, ssize_t,
1110: (int fd, const void *buf, size_t bufsize, off_t offset)
1111: _GL_ARG_NONNULL ((2)));
1112: # endif
1113: _GL_CXXALIAS_SYS (pwrite, ssize_t,
1114: (int fd, const void *buf, size_t bufsize, off_t offset));
1115: # endif
1116: _GL_CXXALIASWARN (pwrite);
1117: #elif defined GNULIB_POSIXCHECK
1118: # undef pwrite
1119: # if HAVE_RAW_DECL_PWRITE
1120: _GL_WARN_ON_USE (pwrite, "pwrite is unportable - "
1121: "use gnulib module pwrite for portability");
1122: # endif
1123: #endif
1124:
1125:
1126: #if @GNULIB_READ@
1127: /* Read up to COUNT bytes from file descriptor FD into the buffer starting
1128: at BUF. See the POSIX:2001 specification
1129: <http://www.opengroup.org/susv3xsh/read.html>. */
1130: # if @REPLACE_READ@ && @GNULIB_UNISTD_H_NONBLOCKING@
1131: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1132: # undef read
1133: # define read rpl_read
1134: # endif
1135: _GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count)
1136: _GL_ARG_NONNULL ((2)));
1137: _GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count));
1138: # else
1139: /* Need to cast, because on mingw, the third parameter is
1140: unsigned int count
1141: and the return type is 'int'. */
1142: _GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count));
1143: # endif
1144: _GL_CXXALIASWARN (read);
1145: #endif
1146:
1147:
1148: #if @GNULIB_READLINK@
1149: /* Read the contents of the symbolic link FILE and place the first BUFSIZE
1150: bytes of it into BUF. Return the number of bytes placed into BUF if
1151: successful, otherwise -1 and errno set.
1152: See the POSIX:2001 specification
1153: <http://www.opengroup.org/susv3xsh/readlink.html>. */
1154: # if @REPLACE_READLINK@
1155: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1156: # define readlink rpl_readlink
1157: # endif
1158: _GL_FUNCDECL_RPL (readlink, ssize_t,
1159: (const char *file, char *buf, size_t bufsize)
1160: _GL_ARG_NONNULL ((1, 2)));
1161: _GL_CXXALIAS_RPL (readlink, ssize_t,
1162: (const char *file, char *buf, size_t bufsize));
1163: # else
1164: # if !@HAVE_READLINK@
1165: _GL_FUNCDECL_SYS (readlink, ssize_t,
1166: (const char *file, char *buf, size_t bufsize)
1167: _GL_ARG_NONNULL ((1, 2)));
1168: # endif
1169: _GL_CXXALIAS_SYS (readlink, ssize_t,
1170: (const char *file, char *buf, size_t bufsize));
1171: # endif
1172: _GL_CXXALIASWARN (readlink);
1173: #elif defined GNULIB_POSIXCHECK
1174: # undef readlink
1175: # if HAVE_RAW_DECL_READLINK
1176: _GL_WARN_ON_USE (readlink, "readlink is unportable - "
1177: "use gnulib module readlink for portability");
1178: # endif
1179: #endif
1180:
1181:
1182: #if @GNULIB_READLINKAT@
1183: # if !@HAVE_READLINKAT@
1184: _GL_FUNCDECL_SYS (readlinkat, ssize_t,
1185: (int fd, char const *file, char *buf, size_t len)
1186: _GL_ARG_NONNULL ((2, 3)));
1187: # endif
1188: _GL_CXXALIAS_SYS (readlinkat, ssize_t,
1189: (int fd, char const *file, char *buf, size_t len));
1190: _GL_CXXALIASWARN (readlinkat);
1191: #elif defined GNULIB_POSIXCHECK
1192: # undef readlinkat
1193: # if HAVE_RAW_DECL_READLINKAT
1194: _GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - "
1195: "use gnulib module readlinkat for portability");
1196: # endif
1197: #endif
1198:
1199:
1200: #if @GNULIB_RMDIR@
1201: /* Remove the directory DIR. */
1202: # if @REPLACE_RMDIR@
1203: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1204: # define rmdir rpl_rmdir
1205: # endif
1206: _GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1)));
1207: _GL_CXXALIAS_RPL (rmdir, int, (char const *name));
1208: # else
1209: _GL_CXXALIAS_SYS (rmdir, int, (char const *name));
1210: # endif
1211: _GL_CXXALIASWARN (rmdir);
1212: #elif defined GNULIB_POSIXCHECK
1213: # undef rmdir
1214: # if HAVE_RAW_DECL_RMDIR
1215: _GL_WARN_ON_USE (rmdir, "rmdir is unportable - "
1216: "use gnulib module rmdir for portability");
1217: # endif
1218: #endif
1219:
1220:
1221: #if @GNULIB_SLEEP@
1222: /* Pause the execution of the current thread for N seconds.
1223: Returns the number of seconds left to sleep.
1224: See the POSIX:2001 specification
1225: <http://www.opengroup.org/susv3xsh/sleep.html>. */
1226: # if @REPLACE_SLEEP@
1227: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1228: # undef sleep
1229: # define sleep rpl_sleep
1230: # endif
1231: _GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n));
1232: _GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n));
1233: # else
1234: # if !@HAVE_SLEEP@
1235: _GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n));
1236: # endif
1237: _GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n));
1238: # endif
1239: _GL_CXXALIASWARN (sleep);
1240: #elif defined GNULIB_POSIXCHECK
1241: # undef sleep
1242: # if HAVE_RAW_DECL_SLEEP
1243: _GL_WARN_ON_USE (sleep, "sleep is unportable - "
1244: "use gnulib module sleep for portability");
1245: # endif
1246: #endif
1247:
1248:
1249: #if @GNULIB_SYMLINK@
1250: # if @REPLACE_SYMLINK@
1251: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1252: # undef symlink
1253: # define symlink rpl_symlink
1254: # endif
1255: _GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file)
1256: _GL_ARG_NONNULL ((1, 2)));
1257: _GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file));
1258: # else
1259: # if !@HAVE_SYMLINK@
1260: _GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file)
1261: _GL_ARG_NONNULL ((1, 2)));
1262: # endif
1263: _GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file));
1264: # endif
1265: _GL_CXXALIASWARN (symlink);
1266: #elif defined GNULIB_POSIXCHECK
1267: # undef symlink
1268: # if HAVE_RAW_DECL_SYMLINK
1269: _GL_WARN_ON_USE (symlink, "symlink is not portable - "
1270: "use gnulib module symlink for portability");
1271: # endif
1272: #endif
1273:
1274:
1275: #if @GNULIB_SYMLINKAT@
1276: # if !@HAVE_SYMLINKAT@
1277: _GL_FUNCDECL_SYS (symlinkat, int,
1278: (char const *contents, int fd, char const *file)
1279: _GL_ARG_NONNULL ((1, 3)));
1280: # endif
1281: _GL_CXXALIAS_SYS (symlinkat, int,
1282: (char const *contents, int fd, char const *file));
1283: _GL_CXXALIASWARN (symlinkat);
1284: #elif defined GNULIB_POSIXCHECK
1285: # undef symlinkat
1286: # if HAVE_RAW_DECL_SYMLINKAT
1287: _GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - "
1288: "use gnulib module symlinkat for portability");
1289: # endif
1290: #endif
1291:
1292:
1293: #if @GNULIB_TTYNAME_R@
1294: /* Store at most BUFLEN characters of the pathname of the terminal FD is
1295: open on in BUF. Return 0 on success, otherwise an error number. */
1296: # if @REPLACE_TTYNAME_R@
1297: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1298: # undef ttyname_r
1299: # define ttyname_r rpl_ttyname_r
1300: # endif
1301: _GL_FUNCDECL_RPL (ttyname_r, int,
1302: (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
1303: _GL_CXXALIAS_RPL (ttyname_r, int,
1304: (int fd, char *buf, size_t buflen));
1305: # else
1306: # if !@HAVE_DECL_TTYNAME_R@
1307: _GL_FUNCDECL_SYS (ttyname_r, int,
1308: (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
1309: # endif
1310: _GL_CXXALIAS_SYS (ttyname_r, int,
1311: (int fd, char *buf, size_t buflen));
1312: # endif
1313: _GL_CXXALIASWARN (ttyname_r);
1314: #elif defined GNULIB_POSIXCHECK
1315: # undef ttyname_r
1316: # if HAVE_RAW_DECL_TTYNAME_R
1317: _GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - "
1318: "use gnulib module ttyname_r for portability");
1319: # endif
1320: #endif
1321:
1322:
1323: #if @GNULIB_UNLINK@
1324: # if @REPLACE_UNLINK@
1325: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1326: # undef unlink
1327: # define unlink rpl_unlink
1328: # endif
1329: _GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1)));
1330: _GL_CXXALIAS_RPL (unlink, int, (char const *file));
1331: # else
1332: _GL_CXXALIAS_SYS (unlink, int, (char const *file));
1333: # endif
1334: _GL_CXXALIASWARN (unlink);
1335: #elif defined GNULIB_POSIXCHECK
1336: # undef unlink
1337: # if HAVE_RAW_DECL_UNLINK
1338: _GL_WARN_ON_USE (unlink, "unlink is not portable - "
1339: "use gnulib module unlink for portability");
1340: # endif
1341: #endif
1342:
1343:
1344: #if @GNULIB_UNLINKAT@
1345: # if @REPLACE_UNLINKAT@
1346: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1347: # undef unlinkat
1348: # define unlinkat rpl_unlinkat
1349: # endif
1350: _GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag)
1351: _GL_ARG_NONNULL ((2)));
1352: _GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag));
1353: # else
1354: # if !@HAVE_UNLINKAT@
1355: _GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag)
1356: _GL_ARG_NONNULL ((2)));
1357: # endif
1358: _GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag));
1359: # endif
1360: _GL_CXXALIASWARN (unlinkat);
1361: #elif defined GNULIB_POSIXCHECK
1362: # undef unlinkat
1363: # if HAVE_RAW_DECL_UNLINKAT
1364: _GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - "
1365: "use gnulib module openat for portability");
1366: # endif
1367: #endif
1368:
1369:
1370: #if @GNULIB_USLEEP@
1371: /* Pause the execution of the current thread for N microseconds.
1372: Returns 0 on completion, or -1 on range error.
1373: See the POSIX:2001 specification
1374: <http://www.opengroup.org/susv3xsh/sleep.html>. */
1375: # if @REPLACE_USLEEP@
1376: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1377: # undef usleep
1378: # define usleep rpl_usleep
1379: # endif
1380: _GL_FUNCDECL_RPL (usleep, int, (useconds_t n));
1381: _GL_CXXALIAS_RPL (usleep, int, (useconds_t n));
1382: # else
1383: # if !@HAVE_USLEEP@
1384: _GL_FUNCDECL_SYS (usleep, int, (useconds_t n));
1385: # endif
1386: _GL_CXXALIAS_SYS (usleep, int, (useconds_t n));
1387: # endif
1388: _GL_CXXALIASWARN (usleep);
1389: #elif defined GNULIB_POSIXCHECK
1390: # undef usleep
1391: # if HAVE_RAW_DECL_USLEEP
1392: _GL_WARN_ON_USE (usleep, "usleep is unportable - "
1393: "use gnulib module usleep for portability");
1394: # endif
1395: #endif
1396:
1397:
1398: #if @GNULIB_WRITE@
1399: /* Write up to COUNT bytes starting at BUF to file descriptor FD.
1400: See the POSIX:2001 specification
1401: <http://www.opengroup.org/susv3xsh/write.html>. */
1402: # if @REPLACE_WRITE@ && (@GNULIB_UNISTD_H_NONBLOCKING@ || @GNULIB_UNISTD_H_SIGPIPE@)
1403: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1404: # undef write
1405: # define write rpl_write
1406: # endif
1407: _GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count)
1408: _GL_ARG_NONNULL ((2)));
1409: _GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count));
1410: # else
1411: /* Need to cast, because on mingw, the third parameter is
1412: unsigned int count
1413: and the return type is 'int'. */
1414: _GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count));
1415: # endif
1416: _GL_CXXALIASWARN (write);
1417: #endif
1418:
1419:
1420: #endif /* _@GUARD_PREFIX@_UNISTD_H */
1421: #endif /* _@GUARD_PREFIX@_UNISTD_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>