~ubuntu-branches/ubuntu/quantal/gnutls26/quantal-security

« back to all changes in this revision

Viewing changes to lib/gl/unistd.in.h

  • Committer: Bazaar Package Importer
  • Author(s): Steve Langasek
  • Date: 2011-05-20 13:07:18 UTC
  • mfrom: (12.1.11 sid)
  • Revision ID: james.westby@ubuntu.com-20110520130718-db41dybbanzfvlji
Tags: 2.10.5-1ubuntu1
* Merge from Debian unstable, remaining changes:
  - Fix build failure with --no-add-needed.
  - Build for multiarch.

Show diffs side-by-side

added added

removed removed

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