105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Substitute for and wrapper around <unistd.h>.
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Copyright (C) 2003-2012 Free Software Foundation, Inc.
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is free software; you can redistribute it and/or modify
605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   it under the terms of the GNU General Public License as published by
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the Free Software Foundation; either version 3, or (at your option)
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   any later version.
905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is distributed in the hope that it will be useful,
1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   but WITHOUT ANY WARRANTY; without even the implied warranty of
1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNU General Public License for more details.
1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   You should have received a copy of the GNU General Public License
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ >= 3
1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#pragma GCC system_header
2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Special invocation convention:
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   - On mingw, several headers, including <winsock2.h>, include <unistd.h>,
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but we need to ensure that both the system <unistd.h> and <winsock2.h>
2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     are completely included before we replace gethostname.  */
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0 && 0 \
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  && !defined _GL_WINSOCK2_H_WITNESS && defined _WINSOCK2_H
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* <unistd.h> is being indirectly included for the first time from
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <winsock2.h>; avoid declaring any overrides.  */
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  include_next <unistd.h>
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  error unexpected; report this to bug-gnulib@gnu.org
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_WINSOCK2_H_WITNESS
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Normal invocation.  */
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif !defined _GL_UNISTD_H
4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The include_next requires a split double-inclusion guard.  */
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include_next <unistd.h>
4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get all possible declarations of gethostname().  */
4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0 && 0 \
4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  && !defined _GL_INCLUDING_WINSOCK2_H
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_INCLUDING_WINSOCK2_H
5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <winsock2.h>
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _GL_INCLUDING_WINSOCK2_H
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !defined _GL_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_UNISTD_H
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* NetBSD 5.0 mis-defines NULL.  Also get size_t.  */
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <stddef.h>
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>.  */
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>.  */
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* But avoid namespace pollution on glibc systems.  */
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     || ((0 || defined GNULIB_POSIXCHECK) \
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang         && defined __CYGWIN__)) \
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    && ! defined __GLIBC__
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <stdio.h>
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Cygwin 1.7.1 declares unlinkat in <fcntl.h>, not in <unistd.h>.  */
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* But avoid namespace pollution on glibc systems.  */
7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if (0 || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    && ! defined __GLIBC__
7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <fcntl.h>
7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* mingw fails to declare _exit in <unistd.h>.  */
7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* mingw, MSVC, BeOS, Haiku declare environ in <stdlib.h>, not in
7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <unistd.h>.  */
8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>.  */
8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* But avoid namespace pollution on glibc systems.  */
8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef __GLIBC__
8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <stdlib.h>
8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Native Windows platforms declare chdir, getcwd, rmdir in
8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <io.h> and/or <direct.h>, not in <unistd.h>.
8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   They also declare access(), chmod(), close(), dup(), dup2(), isatty(),
8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   lseek(), read(), unlink(), write() in <io.h>.  */
9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ((0 || 0 || 0 \
9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      || defined GNULIB_POSIXCHECK) \
9205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <io.h>     /* mingw32, mingw64 */
9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <direct.h> /* mingw64, MSVC 9 */
9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif (1 || 0 || 1 || 0 \
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       || 0 || 0 || 0 || 0 \
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       || defined GNULIB_POSIXCHECK) \
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <io.h>
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* AIX and OSF/1 5.1 declare getdomainname in <netdb.h>, not in <unistd.h>.
10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   NonStop Kernel declares gethostname in <netdb.h>, not in <unistd.h>.  */
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* But avoid namespace pollution on glibc systems.  */
10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ((0 && (defined _AIX || defined __osf__)) \
10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     || (0 && defined __TANDEM)) \
10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    && !defined __GLIBC__
10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <netdb.h>
10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* MSVC defines off_t in <sys/types.h>.
11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   May also define off_t to a 64-bit type on native Windows.  */
11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !1 || 0
11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get off_t.  */
11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <sys/types.h>
11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if (0 || 0 \
11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     || 0 || 0 \
12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     || 0 || 0 || defined GNULIB_POSIXCHECK)
12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get ssize_t.  */
12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <sys/types.h>
12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get getopt(), optarg, optind, opterr, optopt.
12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   But avoid namespace pollution on glibc systems.  */
12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 01 && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT
12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <getopt.h>
12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_INLINE_HEADER_BEGIN
13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_UNISTD_INLINE
13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_UNISTD_INLINE _GL_INLINE
13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_CXXDEFS_H
13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_CXXDEFS_H
13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The three most frequent use cases of these macros are:
14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a substitute for a function that is missing on some
14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     platforms, but is declared and works fine on the platforms on which
14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     it exists:
14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if !@HAVE_FOO@
14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_SYS (foo, ...);
14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a replacement for a function that exists on all platforms,
15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but is broken/insufficient and needs to be replaced on some platforms:
15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if @REPLACE_FOO@
16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   undef foo
16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   define foo rpl_foo
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_RPL (foo, ...);
16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_RPL (foo, ...);
16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # else
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a replacement for a function that exists on some platforms
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but is broken/insufficient and needs to be replaced on some of them and
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     is additionally either missing or undeclared on some other platforms:
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if @REPLACE_FOO@
18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   undef foo
18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   define foo rpl_foo
18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_RPL (foo, ...);
18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_RPL (foo, ...);
18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # else
18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_SYS (foo, ...);
19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang*/
19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_EXTERN_C declaration;
20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   performs the declaration with C linkage.  */
20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus
20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_EXTERN_C extern "C"
20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_EXTERN_C extern
20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a replacement function, named rpl_func, with the given prototype,
20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   consisting of return type, parameters, and attributes.
21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_EXTERN_C rettype rpl_func parameters_and_attributes
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares the system function, named func, with the given prototype,
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   consisting of return type, parameters, and attributes.
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_EXTERN_C rettype func parameters_and_attributes
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_RPL (func, rettype, parameters);
23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a C++ alias called GNULIB_NAMESPACE::func
23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                \
24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                         \
24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      rettype (*const func) parameters = ::rpl_func;          \
24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                         \
24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function rpl_func may have a slightly different
25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declaration.  A cast is used to silence the "invalid conversion" error
25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that would otherwise occur.  */
25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                     \
25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                              \
25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      rettype (*const func) parameters =                           \
25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(::rpl_func);        \
26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                              \
26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS (func, rettype, parameters);
26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a C++ alias called GNULIB_NAMESPACE::func
26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that redirects to the system provided function func, if GNULIB_NAMESPACE
27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is defined.
27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
27205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* If we were to write
27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       rettype (*const func) parameters = ::func;
27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls
27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     better (remove an indirection through a 'static' pointer variable),
27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but then the _GL_CXXALIASWARN macro below would cause a warning not only
28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     for uses of ::func but also for uses of GNULIB_NAMESPACE::func.  */
28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                     \
28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                              \
28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters = ::func;  \
28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                              \
28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function func may have a slightly different declaration.
29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   A cast is used to silence the "invalid conversion" error that would
29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   otherwise occur.  */
29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                          \
30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                   \
30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters =               \
30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(::func); \
30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                   \
30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function is picked among a set of overloaded functions,
31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   namely the one with rettype2 and parameters2.  Two consecutive casts
31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   are used to silence the "cannot find a match" and "invalid conversion"
31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   errors that would otherwise occur.  */
31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* The outer cast must be a reinterpret_cast.
31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     The inner cast: When the function is defined as a set of overloaded
31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     functions, it works as a static_cast<>, choosing the designated variant.
32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     When the function is defined as a single variant, it works as a
32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                                \
32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                                         \
32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters =                                     \
32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(                               \
32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang          (rettype2(*)parameters2)(::func));                                  \
32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                                         \
32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIASWARN (func);
33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   causes a warning to be emitted when ::func is used but not when
33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   variants.  */
33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN(func) \
34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN_1(func,namespace) \
34305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN_2 (func, namespace)
34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   we enable the warning only when not optimizing.  */
34605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !__OPTIMIZE__
34705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (func, \
34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "The symbol ::" #func " refers to the system function. " \
35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "Use " #namespace "::" #func " instead.")
35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     extern __typeof__ (func) func
35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_EXTERN_C int _gl_cxxalias_dummy
35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN(func) \
36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
36205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   causes a warning to be emitted when the given overloaded variant of ::func
36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is used but not when GNULIB_NAMESPACE::func is used.  */
36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                        GNULIB_NAMESPACE)
37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
37205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   we enable the warning only when not optimizing.  */
37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !__OPTIMIZE__
37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         "The symbol ::" #func " refers to the system function. " \
37805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         "Use " #namespace "::" #func " instead.")
37905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
38005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
38105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     extern __typeof__ (func) func
38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_EXTERN_C int _gl_cxxalias_dummy
38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_CXXDEFS_H */
39205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_ARG_NONNULL is copied here.  */
39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that the values passed as arguments n, ..., m must be non-NULL pointers.
39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   n = 1 stands for the first argument, n = 2 for the second argument etc.  */
39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_ARG_NONNULL
39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
40005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_ARG_NONNULL(params)
40205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_WARN_ON_USE is copied here.  */
40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_ON_USE
40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A compiler attribute is available in gcc versions 4.3.0 and later.  */
41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
41105436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern __typeof__ (function) function __attribute__ ((__warning__ (message)))
41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Verify the existence of the function.  */
41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
41505436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern __typeof__ (function) function
41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else /* Unsupported.  */
41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_EXTERN_C int _gl_warn_on_use
41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like _GL_WARN_ON_USE (function, "string"), except that the function is
42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declared with the given prototype, consisting of return type, parameters,
42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and attributes.
42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   not work in this case.  */
42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_ON_USE_CXX
42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
43105436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern rettype function parameters_and_attributes \
43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     __attribute__ ((__warning__ (msg)))
43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Verify the existence of the function.  */
43505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
43605436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern rettype function parameters_and_attributes
43705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else /* Unsupported.  */
43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_EXTERN_C int _gl_warn_on_use
44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_WARN_EXTERN_C declaration;
44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   performs the declaration with C linkage.  */
44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_EXTERN_C
44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined __cplusplus
44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_EXTERN_C extern "C"
44805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
44905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_EXTERN_C extern
45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
45305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Hide some function declarations from <winsock2.h>.  */
45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0 && 0
45705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !defined _GL_SYS_SOCKET_H
45805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef socket
46005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define socket              socket_used_without_including_sys_socket_h
46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef connect
46205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define connect             connect_used_without_including_sys_socket_h
46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef accept
46405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define accept              accept_used_without_including_sys_socket_h
46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef bind
46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define bind                bind_used_without_including_sys_socket_h
46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getpeername
46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getpeername         getpeername_used_without_including_sys_socket_h
46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getsockname
47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getsockname         getsockname_used_without_including_sys_socket_h
47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getsockopt
47205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getsockopt          getsockopt_used_without_including_sys_socket_h
47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef listen
47405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define listen              listen_used_without_including_sys_socket_h
47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef recv
47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define recv                recv_used_without_including_sys_socket_h
47705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef send
47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define send                send_used_without_including_sys_socket_h
47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef recvfrom
48005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define recvfrom            recvfrom_used_without_including_sys_socket_h
48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sendto
48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define sendto              sendto_used_without_including_sys_socket_h
48305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef setsockopt
48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define setsockopt          setsockopt_used_without_including_sys_socket_h
48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef shutdown
48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define shutdown            shutdown_used_without_including_sys_socket_h
48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (socket,
48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "socket() used without including <sys/socket.h>");
49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (connect,
49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "connect() used without including <sys/socket.h>");
49205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (accept,
49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "accept() used without including <sys/socket.h>");
49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (bind,
49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "bind() used without including <sys/socket.h>");
49605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (getpeername,
49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "getpeername() used without including <sys/socket.h>");
49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (getsockname,
49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "getsockname() used without including <sys/socket.h>");
50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (getsockopt,
50105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "getsockopt() used without including <sys/socket.h>");
50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (listen,
50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "listen() used without including <sys/socket.h>");
50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (recv,
50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "recv() used without including <sys/socket.h>");
50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (send,
50705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "send() used without including <sys/socket.h>");
50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (recvfrom,
50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "recvfrom() used without including <sys/socket.h>");
51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (sendto,
51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "sendto() used without including <sys/socket.h>");
51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (setsockopt,
51305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "setsockopt() used without including <sys/socket.h>");
51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (shutdown,
51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "shutdown() used without including <sys/socket.h>");
51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
51805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !defined _GL_SYS_SELECT_H
51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef select
52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define select              select_used_without_including_sys_select_h
52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (select,
52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "select() used without including <sys/select.h>");
52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* OS/2 EMX lacks these macros.  */
53105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef STDIN_FILENO
53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define STDIN_FILENO 0
53305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef STDOUT_FILENO
53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define STDOUT_FILENO 1
53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef STDERR_FILENO
53805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define STDERR_FILENO 2
53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Ensure *_OK macros exist.  */
54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef F_OK
54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define F_OK 0
54405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define X_OK 1
54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define W_OK 2
54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define R_OK 4
54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Declare overridden functions.  */
55105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined GNULIB_POSIXCHECK
55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The access() function is a security risk.  */
55505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (access, "the access function is a security risk - "
55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module faccessat instead");
55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1)));
56205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (chdir);
56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
56405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef chdir
56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_CHDIR
56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (chown, "chdir is not always in <unistd.h> - "
56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module chdir for portability");
56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   to GID (if GID is not -1).  Follow symbolic links.
57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
57605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/chown.html.  */
57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef chown
58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define chown rpl_chown
58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (chown, int, (const char *file, uid_t uid, gid_t gid)
58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                              _GL_ARG_NONNULL ((1)));
58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (chown, int, (const char *file, uid_t uid, gid_t gid));
58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
58705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (chown, int, (const char *file, uid_t uid, gid_t gid)
58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                              _GL_ARG_NONNULL ((1)));
59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (chown, int, (const char *file, uid_t uid, gid_t gid));
59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (chown);
59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef chown
59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_CHOWN
59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (chown, "chown fails to follow symlinks on some systems and "
59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "doesn't treat a uid or gid of -1 on some systems - "
59905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module chown for portability");
60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
60205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
60605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Automatically included by modules that need a replacement for close.  */
60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
60805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef close
60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define close rpl_close
61005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (close, int, (int fd));
61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (close, int, (int fd));
61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
61405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (close, int, (int fd));
61505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
61605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (close);
61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif 0
61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef close
61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define close close_used_without_requesting_gnulib_module_close
62005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef close
62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume close is always declared.  */
62305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (close, "close does not portably work on sockets - "
62405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module close for portability");
62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
62605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define dup rpl_dup
63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (dup, int, (int oldfd));
63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (dup, int, (int oldfd));
63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (dup, int, (int oldfd));
63705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
63805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (dup);
63905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef dup
64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_DUP
64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (dup, "dup is unportable - "
64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module dup for portability");
64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
64605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
64905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy the file descriptor OLDFD into file descriptor NEWFD.  Do nothing if
65005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   NEWFD = OLDFD, otherwise close NEWFD first if it is open.
65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return newfd if successful, otherwise -1 and errno set.
65205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
65305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/dup2.html>.  */
65405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
65505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
65605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define dup2 rpl_dup2
65705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
65805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd));
65905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd));
66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
66105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
66205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd));
66305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
66405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd));
66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (dup2);
66705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
66805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef dup2
66905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_DUP2
67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (dup2, "dup2 is unportable - "
67105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module dup2 for portability");
67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
67305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
67405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy the file descriptor OLDFD into file descriptor NEWFD, with the
67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   specified flags.
67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and O_TEXT, O_BINARY (defined in "binary-io.h").
68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Close NEWFD first if it is open.
68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return newfd if successful, otherwise -1 and errno set.
68305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the Linux man page at
68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html>.  */
68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
68605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
68705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define dup3 rpl_dup3
68805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
68905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags));
69005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags));
69105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
69205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags));
69305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags));
69405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
69505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (dup3);
69605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
69705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef dup3
69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_DUP3
69905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (dup3, "dup3 is unportable - "
70005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module dup3 for portability");
70105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
70205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
70305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
70605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !0
70705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set of environment variables and values.  An array of strings of the form
70805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   "VARIABLE=VALUE", terminated with a NULL.  */
70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __APPLE__ && defined __MACH__
71005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   include <crt_externs.h>
71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define environ (*_NSGetEnviron ())
71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
71305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   ifdef __cplusplus
71405436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern "C" {
71505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
71605436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern char **environ;
71705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   ifdef __cplusplus
71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_ENVIRON
72405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_UNISTD_INLINE char ***
72505436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_environ (void)
72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return &environ;
72805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
72905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (rpl_environ, "environ is unportable - "
73005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module environ for portability");
73105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef environ
73205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define environ (*rpl_environ ())
73305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
73405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
73505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
73805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Like access(), except that it uses the effective user id and group id of
73905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the current process.  */
74005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
74105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode)
74205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                   _GL_ARG_NONNULL ((1)));
74305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
74405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode));
74505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (euidaccess);
74605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined GNULIB_POSIXCHECK
74705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Like access(), this function is a security risk.  */
74805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - "
74905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module faccessat instead");
75005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
75105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
75205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef euidaccess
75305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_EUIDACCESS
75405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - "
75505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module euidaccess for portability");
75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
75705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
75805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
76105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
76205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (faccessat, int,
76305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char const *file, int mode, int flag)
76405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2)));
76505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
76605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (faccessat, int,
76705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char const *file, int mode, int flag));
76805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (faccessat);
76905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
77005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef faccessat
77105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FACCESSAT
77205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (faccessat, "faccessat is not portable - "
77305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module faccessat for portability");
77405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
77505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
77605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
77905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Change the process' current working directory to the directory on which
78005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the given file descriptor is open.
78105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
78205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
78305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fchdir.html>.  */
78405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ! 1
78505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
78605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Gnulib internal hooks needed to maintain the fchdir metadata.  */
78805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_EXTERN_C int _gl_register_fd (int fd, const char *filename)
78905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_ARG_NONNULL ((2));
79005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_EXTERN_C void _gl_unregister_fd (int fd);
79105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd);
79205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_EXTERN_C const char *_gl_directory_name (int fd);
79305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
79505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
79605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
79705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
79805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
79905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
80005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fchdir);
80105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
80205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fchdir
80305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FCHDIR
80405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fchdir, "fchdir is unportable - "
80505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fchdir for portability");
80605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
80705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
80805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
81105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
81205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
81305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fchownat
81405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fchownat rpl_fchownat
81505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
81605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file,
81705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  uid_t owner, gid_t group, int flag)
81805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((2)));
81905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file,
82005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  uid_t owner, gid_t group, int flag));
82105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
82205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
82305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file,
82405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  uid_t owner, gid_t group, int flag)
82505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((2)));
82605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
82705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file,
82805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  uid_t owner, gid_t group, int flag));
82905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
83005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fchownat);
83105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
83205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fchownat
83305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FCHOWNAT
83405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fchownat, "fchownat is not portable - "
83505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module openat for portability");
83605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
83705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
83805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
83905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
84105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Synchronize changes to a file.
84205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
84305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See POSIX:2008 specification
84405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html>.  */
84505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1 || !1
84605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fdatasync, int, (int fd));
84705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
84805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fdatasync, int, (int fd));
84905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fdatasync);
85005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
85105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fdatasync
85205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FDATASYNC
85305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - "
85405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fdatasync for portability");
85505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
85605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
85705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
85805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
85905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
86005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Synchronize changes, including metadata, to a file.
86105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
86205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See POSIX:2008 specification
86305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html>.  */
86405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
86505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fsync, int, (int fd));
86605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
86705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fsync, int, (int fd));
86805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fsync);
86905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
87005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fsync
87105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FSYNC
87205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fsync, "fsync is unportable - "
87305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fsync for portability");
87405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
87505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
87605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
87705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
87805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
87905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Change the size of the file to which FD is opened to become equal to LENGTH.
88005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
88105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
88205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html>.  */
88305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
88405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
88505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef ftruncate
88605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define ftruncate rpl_ftruncate
88705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
88805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length));
88905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length));
89005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
89105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
89205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length));
89305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
89405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length));
89505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
89605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (ftruncate);
89705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
89805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef ftruncate
89905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FTRUNCATE
90005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - "
90105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module ftruncate for portability");
90205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
90305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
90405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
90505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
90605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
90705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get the name of the current working directory, and put it in SIZE bytes
90805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   of BUF.
90905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return BUF if successful, or NULL if the directory couldn't be determined
91005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   or SIZE was too small.
91105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
91205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html>.
91305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Additionally, the gnulib module 'getcwd' guarantees the following GNU
91405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   extension: If BUF is NULL, an array is allocated with 'malloc'; the array
91505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is SIZE bytes long, unless SIZE == 0, in which case it is as big as
91605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   necessary.  */
91705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
91805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
91905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getcwd rpl_getcwd
92005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
92105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size));
92205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size));
92305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
92405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on mingw, the second parameter is
92505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                   int size.  */
92605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size));
92705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
92805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getcwd);
92905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
93005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getcwd
93105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETCWD
93205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getcwd, "getcwd is unportable - "
93305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getcwd for portability");
93405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
93505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
93605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
93905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the NIS domain name of the machine.
94005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   WARNING! The NIS domain name is unrelated to the fully qualified host name
94105436638acc7c010349a69c3395f1a57c642dc62Ying Wang            of the machine.  It is also unrelated to email addresses.
94205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   WARNING! The NIS domain name is usually the empty string or "(none)" when
94305436638acc7c010349a69c3395f1a57c642dc62Ying Wang            not using NIS.
94405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
94505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Put up to LEN bytes of the NIS domain name into NAME.
94605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Null terminate it if the name is shorter than LEN.
94705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   If the NIS domain name is longer than LEN, set errno = EINVAL and return -1.
94805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise set errno and return -1.  */
94905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
95005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
95105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getdomainname
95205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getdomainname rpl_getdomainname
95305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
95405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len)
95505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                      _GL_ARG_NONNULL ((1)));
95605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len));
95705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
95805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
95905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len)
96005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                      _GL_ARG_NONNULL ((1)));
96105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
96205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len));
96305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
96405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getdomainname);
96505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
96605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getdomainname
96705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETDOMAINNAME
96805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - "
96905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getdomainname for portability");
97005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
97105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
97205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
97305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
97405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
97505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the maximum number of file descriptors in the current process.
97605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   In POSIX, this is same as sysconf (_SC_OPEN_MAX).  */
97705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
97805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getdtablesize, int, (void));
97905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
98005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getdtablesize, int, (void));
98105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getdtablesize);
98205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
98305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getdtablesize
98405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETDTABLESIZE
98505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - "
98605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getdtablesize for portability");
98705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
98805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
98905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
99005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
99105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
99205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the supplemental groups that the current process belongs to.
99305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   It is unspecified whether the effective group id is in the list.
99405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   If N is 0, return the group count; otherwise, N describes how many
99505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   entries are available in GROUPS.  Return -1 and set errno if N is
99605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   not 0 and not large enough.  Fails with ENOSYS on some systems.  */
99705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
99805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
99905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getgroups
100005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getgroups rpl_getgroups
100105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
100205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups));
100305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups));
100405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
100505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
100605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups));
100705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
100805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups));
100905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
101005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getgroups);
101105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
101205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getgroups
101305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETGROUPS
101405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getgroups, "getgroups is unportable - "
101505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getgroups for portability");
101605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
101705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
101805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
102105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the standard host name of the machine.
102205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   WARNING! The host name may or may not be fully qualified.
102305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Put up to LEN bytes of the host name into NAME.
102505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Null terminate it if the name is shorter than LEN.
102605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   If the host name is longer than LEN, set errno = EINVAL and return -1.
102705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise set errno and return -1.  */
102805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
102905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
103005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef gethostname
103105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define gethostname rpl_gethostname
103205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
103305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len)
103405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                    _GL_ARG_NONNULL ((1)));
103505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len));
103605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
103705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
103805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len)
103905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                    _GL_ARG_NONNULL ((1)));
104005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
104105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second
104205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   parameter is
104305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                      int len.  */
104405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len));
104505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
104605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (gethostname);
104705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif 0
104805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef gethostname
104905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname
105005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
105105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef gethostname
105205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETHOSTNAME
105305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (gethostname, "gethostname is unportable - "
105405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module gethostname for portability");
105505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
105605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
105705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
106005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Returns the user's login name, or NULL if it cannot be found.  Upon error,
106105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   returns NULL with errno set.
106205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
106305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See <http://www.opengroup.org/susv3xsh/getlogin.html>.
106405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
106505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Most programs don't need to use this function, because the information is
106605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   available through environment variables:
106705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     ${LOGNAME-$USER}        on Unix platforms,
106805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     $USERNAME               on native Windows platforms.
106905436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
107005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
107105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getlogin, char *, (void));
107205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
107305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getlogin, char *, (void));
107405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getlogin);
107505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
107605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getlogin
107705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETLOGIN
107805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getlogin, "getlogin is unportable - "
107905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getlogin for portability");
108005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
108105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
108205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
108505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copies the user's login name to NAME.
108605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The array pointed to by NAME has room for SIZE bytes.
108705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Returns 0 if successful.  Upon error, an error number is returned, or -1 in
108905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the case that the login name cannot be found but no specific error is
109005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   provided (this case is hopefully rare but is left open by the POSIX spec).
109105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See <http://www.opengroup.org/susv3xsh/getlogin.html>.
109305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Most programs don't need to use this function, because the information is
109505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   available through environment variables:
109605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     ${LOGNAME-$USER}        on Unix platforms,
109705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     $USERNAME               on native Windows platforms.
109805436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
109905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
110005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
110105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getlogin_r rpl_getlogin_r
110205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
110305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size)
110405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                   _GL_ARG_NONNULL ((1)));
110505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size));
110605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
110705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
110805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size)
110905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                   _GL_ARG_NONNULL ((1)));
111005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
111105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on Solaris 10 systems, the second argument is
111205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                     int size.  */
111305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size));
111405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
111505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getlogin_r);
111605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
111705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getlogin_r
111805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETLOGIN_R
111905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - "
112005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getlogin_r for portability");
112105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
112205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
112305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
112405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
112505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
112605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
112705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
112805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getpagesize rpl_getpagesize
112905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
113005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getpagesize, int, (void));
113105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getpagesize, int, (void));
113205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
113305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
113405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   if !defined getpagesize
113505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This is for POSIX systems.  */
113605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    if !defined _gl_getpagesize && defined _SC_PAGESIZE
113705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     if ! (defined __VMS && __VMS_VER < 70000000)
113805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      define _gl_getpagesize() sysconf (_SC_PAGESIZE)
113905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     endif
114005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    endif
114105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This is for older VMS.  */
114205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    if !defined _gl_getpagesize && defined __VMS
114305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     ifdef __ALPHA
114405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      define _gl_getpagesize() 8192
114505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     else
114605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      define _gl_getpagesize() 512
114705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     endif
114805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    endif
114905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This is for BeOS.  */
115005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    if !defined _gl_getpagesize && 0
115105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     include <OS.h>
115205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     if defined B_PAGE_SIZE
115305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      define _gl_getpagesize() B_PAGE_SIZE
115405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     endif
115505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    endif
115605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This is for AmigaOS4.0.  */
115705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    if !defined _gl_getpagesize && defined __amigaos4__
115805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     define _gl_getpagesize() 2048
115905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    endif
116005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This is for older Unix systems.  */
116105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    if !defined _gl_getpagesize && 0
116205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     include <sys/param.h>
116305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     ifdef EXEC_PAGESIZE
116405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      define _gl_getpagesize() EXEC_PAGESIZE
116505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     else
116605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      ifdef NBPG
116705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#       ifndef CLSIZE
116805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#        define CLSIZE 1
116905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#       endif
117005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#       define _gl_getpagesize() (NBPG * CLSIZE)
117105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      else
117205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#       ifdef NBPC
117305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#        define _gl_getpagesize() NBPC
117405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#       endif
117505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      endif
117605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     endif
117705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    endif
117805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    if !(defined __cplusplus && defined GNULIB_NAMESPACE)
117905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     define getpagesize() _gl_getpagesize ()
118005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    else
118105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     if !GNULIB_defined_getpagesize_function
118205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_UNISTD_INLINE int
118305436638acc7c010349a69c3395f1a57c642dc62Ying Wanggetpagesize ()
118405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
118505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return _gl_getpagesize ();
118605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
118705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      define GNULIB_defined_getpagesize_function 1
118805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     endif
118905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    endif
119005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
119105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
119205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t.  */
119305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (getpagesize, int, (void));
119405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
119505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
119605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getpagesize);
119705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
119805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
119905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getpagesize
120005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETPAGESIZE
120105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - "
120205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getpagesize for portability");
120305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
120405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
120505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
120605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
120705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
120805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the next valid login shell on the system, or NULL when the end of
120905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the list has been reached.  */
121005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
121105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getusershell, char *, (void));
121205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
121305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getusershell, char *, (void));
121405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getusershell);
121505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
121605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getusershell
121705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETUSERSHELL
121805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getusershell, "getusershell is unportable - "
121905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getusershell for portability");
122005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
122105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
122205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
122305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
122405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Rewind to pointer that is advanced at each getusershell() call.  */
122505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
122605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (setusershell, void, (void));
122705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
122805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (setusershell, void, (void));
122905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (setusershell);
123005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
123105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef setusershell
123205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SETUSERSHELL
123305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (setusershell, "setusershell is unportable - "
123405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getusershell for portability");
123505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
123605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
123705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
123805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
123905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Free the pointer that is advanced at each getusershell() call and
124005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   associated resources.  */
124105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
124205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (endusershell, void, (void));
124305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
124405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (endusershell, void, (void));
124505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (endusershell);
124605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
124705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef endusershell
124805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_ENDUSERSHELL
124905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (endusershell, "endusershell is unportable - "
125005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getusershell for portability");
125105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
125205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
125305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
125405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
125505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
125605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Determine whether group id is in calling user's group list.  */
125705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
125805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (group_member, int, (gid_t gid));
125905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
126005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (group_member, int, (gid_t gid));
126105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (group_member);
126205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
126305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef group_member
126405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GROUP_MEMBER
126505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (group_member, "group_member is unportable - "
126605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module group-member for portability");
126705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
126805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
126905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
127005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
127105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
127205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
127305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
127405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef isatty
127505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define isatty rpl_isatty
127605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
127705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (isatty, int, (int fd));
127805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (isatty, int, (int fd));
127905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
128005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (isatty, int, (int fd));
128105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
128205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (isatty);
128305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
128405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef isatty
128505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_ISATTY
128605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - "
128705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module isatty for portability");
128805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
128905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
129005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
129105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
129205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
129305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
129405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   to GID (if GID is not -1).  Do not follow symbolic links.
129505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
129605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
129705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lchown.html>.  */
129805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
129905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
130005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef lchown
130105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define lchown rpl_lchown
130205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
130305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)
130405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               _GL_ARG_NONNULL ((1)));
130505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group));
130605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
130705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
130805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)
130905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               _GL_ARG_NONNULL ((1)));
131005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
131105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group));
131205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
131305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (lchown);
131405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
131505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef lchown
131605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_LCHOWN
131705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - "
131805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module lchown for portability");
131905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
132005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
132105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
132205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
132305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
132405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Create a new hard link for an existing file.
132505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
132605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See POSIX:2008 specification
132705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html>.  */
132805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
132905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
133005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define link rpl_link
133105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
133205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2)
133305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             _GL_ARG_NONNULL ((1, 2)));
133405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2));
133505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
133605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
133705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2)
133805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             _GL_ARG_NONNULL ((1, 2)));
133905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
134005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2));
134105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
134205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (link);
134305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
134405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef link
134505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_LINK
134605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (link, "link is unportable - "
134705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module link for portability");
134805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
134905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
135005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
135105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
135205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
135305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Create a new hard link for an existing file, relative to two
135405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   directories.  FLAG controls whether symlinks are followed.
135505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.  */
135605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
135705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
135805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef linkat
135905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define linkat rpl_linkat
136005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
136105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (linkat, int,
136205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd1, const char *path1, int fd2, const char *path2,
136305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int flag)
136405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 4)));
136505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (linkat, int,
136605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd1, const char *path1, int fd2, const char *path2,
136705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int flag));
136805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
136905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
137005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (linkat, int,
137105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd1, const char *path1, int fd2, const char *path2,
137205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int flag)
137305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 4)));
137405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
137505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (linkat, int,
137605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd1, const char *path1, int fd2, const char *path2,
137705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int flag));
137805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
137905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (linkat);
138005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
138105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef linkat
138205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_LINKAT
138305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (linkat, "linkat is unportable - "
138405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module linkat for portability");
138505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
138605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
138705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
138805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
138905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
139005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
139105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return the new offset if successful, otherwise -1 and errno set.
139205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
139305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html>.  */
139405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
139505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
139605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define lseek rpl_lseek
139705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
139805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence));
139905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence));
140005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
140105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence));
140205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
140305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (lseek);
140405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
140505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef lseek
140605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_LSEEK
140705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some "
140805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "systems - use gnulib module lseek for portability");
140905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
141005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
141105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
141205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
141305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
141405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Create a pipe, defaulting to O_BINARY mode.
141505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Store the read-end as fd[0] and the write-end as fd[1].
141605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 upon success, or -1 with errno set upon failure.  */
141705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
141805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1)));
141905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
142005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (pipe, int, (int fd[2]));
142105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (pipe);
142205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
142305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef pipe
142405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_PIPE
142505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (pipe, "pipe is unportable - "
142605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module pipe-posix for portability");
142705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
142805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
142905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
143005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
143105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
143205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Create a pipe, applying the given flags when opening the read-end of the
143305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   pipe and the write-end of the pipe.
143405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
143505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and O_TEXT, O_BINARY (defined in "binary-io.h").
143605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Store the read-end as fd[0] and the write-end as fd[1].
143705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 upon success, or -1 with errno set upon failure.
143805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See also the Linux man page at
143905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>.  */
144005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
144105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
144205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define pipe2 rpl_pipe2
144305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
144405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
144505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags));
144605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
144705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
144805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags));
144905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
145005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (pipe2);
145105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
145205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef pipe2
145305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_PIPE2
145405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (pipe2, "pipe2 is unportable - "
145505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module pipe2 for portability");
145605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
145705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
145805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
145905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
146005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
146105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET.
146205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return the number of bytes placed into BUF if successful, otherwise
146305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   set errno and return -1.  0 indicates EOF.
146405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
146505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html>.  */
146605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
146705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
146805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef pread
146905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define pread rpl_pread
147005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
147105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (pread, ssize_t,
147205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, void *buf, size_t bufsize, off_t offset)
147305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2)));
147405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (pread, ssize_t,
147505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, void *buf, size_t bufsize, off_t offset));
147605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
147705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
147805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (pread, ssize_t,
147905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, void *buf, size_t bufsize, off_t offset)
148005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2)));
148105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
148205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (pread, ssize_t,
148305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, void *buf, size_t bufsize, off_t offset));
148405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
148505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (pread);
148605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
148705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef pread
148805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_PREAD
148905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (pread, "pread is unportable - "
149005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module pread for portability");
149105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
149205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
149305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
149405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
149505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
149605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET.
149705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return the number of bytes written if successful, otherwise
149805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   set errno and return -1.  0 indicates nothing written.  See the
149905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   POSIX:2008 specification
150005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html>.  */
150105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
150205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
150305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef pwrite
150405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define pwrite rpl_pwrite
150505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
150605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (pwrite, ssize_t,
150705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, const void *buf, size_t bufsize, off_t offset)
150805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2)));
150905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (pwrite, ssize_t,
151005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, const void *buf, size_t bufsize, off_t offset));
151105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
151205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
151305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (pwrite, ssize_t,
151405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, const void *buf, size_t bufsize, off_t offset)
151505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2)));
151605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
151705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (pwrite, ssize_t,
151805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, const void *buf, size_t bufsize, off_t offset));
151905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
152005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (pwrite);
152105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
152205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef pwrite
152305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_PWRITE
152405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (pwrite, "pwrite is unportable - "
152505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module pwrite for portability");
152605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
152705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
152805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
152905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
153005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
153105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Read up to COUNT bytes from file descriptor FD into the buffer starting
153205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   at BUF.  See the POSIX:2008 specification
153305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html>.  */
153405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
153505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
153605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef read
153705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define read rpl_read
153805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
153905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count)
154005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((2)));
154105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count));
154205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
154305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on mingw, the third parameter is
154405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                          unsigned int count
154505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and the return type is 'int'.  */
154605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count));
154705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
154805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (read);
154905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
155005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
155105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
155205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
155305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Read the contents of the symbolic link FILE and place the first BUFSIZE
155405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   bytes of it into BUF.  Return the number of bytes placed into BUF if
155505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   successful, otherwise -1 and errno set.
155605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
155705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html>.  */
155805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
155905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
156005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define readlink rpl_readlink
156105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
156205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (readlink, ssize_t,
156305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *file, char *buf, size_t bufsize)
156405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
156505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (readlink, ssize_t,
156605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *file, char *buf, size_t bufsize));
156705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
156805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
156905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (readlink, ssize_t,
157005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *file, char *buf, size_t bufsize)
157105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
157205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
157305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (readlink, ssize_t,
157405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *file, char *buf, size_t bufsize));
157505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
157605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (readlink);
157705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
157805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef readlink
157905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_READLINK
158005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (readlink, "readlink is unportable - "
158105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module readlink for portability");
158205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
158305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
158405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
158705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
158805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (readlinkat, ssize_t,
158905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char const *file, char *buf, size_t len)
159005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 3)));
159105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
159205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (readlinkat, ssize_t,
159305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char const *file, char *buf, size_t len));
159405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (readlinkat);
159505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
159605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef readlinkat
159705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_READLINKAT
159805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - "
159905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module readlinkat for portability");
160005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
160105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
160205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
160505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Remove the directory DIR.  */
160605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
160705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
160805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define rmdir rpl_rmdir
160905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
161005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1)));
161105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (rmdir, int, (char const *name));
161205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
161305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (rmdir, int, (char const *name));
161405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
161505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (rmdir);
161605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
161705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef rmdir
161805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_RMDIR
161905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (rmdir, "rmdir is unportable - "
162005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module rmdir for portability");
162105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
162205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
162305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
162405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
162505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
162605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set the host name of the machine.
162705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The host name may or may not be fully qualified.
162805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
162905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Put LEN bytes of NAME into the host name.
163005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise, set errno and return -1.
163105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
163205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Platforms with no ability to set the hostname return -1 and set
163305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   errno = ENOSYS.  */
163405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1 || !1
163505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len)
163605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                    _GL_ARG_NONNULL ((1)));
163705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
163805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5
163905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and FreeBSD 6.4 the second parameter is int.  On Solaris 11
164005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   2011-10, the first parameter is not const.  */
164105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len));
164205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sethostname);
164305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
164405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sethostname
164505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SETHOSTNAME
164605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sethostname, "sethostname is unportable - "
164705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module sethostname for portability");
164805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
164905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
165005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
165105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
165205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
165305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Pause the execution of the current thread for N seconds.
165405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Returns the number of seconds left to sleep.
165505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
165605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/sleep.html>.  */
165705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
165805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
165905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sleep
166005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define sleep rpl_sleep
166105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
166205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n));
166305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n));
166405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
166505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
166605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n));
166705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
166805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n));
166905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
167005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sleep);
167105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
167205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sleep
167305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SLEEP
167405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sleep, "sleep is unportable - "
167505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module sleep for portability");
167605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
167705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
167805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
167905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
168005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
168105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
168205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
168305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef symlink
168405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define symlink rpl_symlink
168505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
168605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file)
168705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ARG_NONNULL ((1, 2)));
168805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file));
168905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
169005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
169105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file)
169205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ARG_NONNULL ((1, 2)));
169305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
169405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file));
169505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
169605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (symlink);
169705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
169805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef symlink
169905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SYMLINK
170005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (symlink, "symlink is not portable - "
170105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module symlink for portability");
170205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
170305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
170405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
170505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
170605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
170705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
170805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (symlinkat, int,
170905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char const *contents, int fd, char const *file)
171005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 3)));
171105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
171205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (symlinkat, int,
171305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char const *contents, int fd, char const *file));
171405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (symlinkat);
171505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
171605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef symlinkat
171705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SYMLINKAT
171805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - "
171905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module symlinkat for portability");
172005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
172105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
172205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
172305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
172405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
172505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Store at most BUFLEN characters of the pathname of the terminal FD is
172605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   open on in BUF.  Return 0 on success, otherwise an error number.  */
172705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
172805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
172905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef ttyname_r
173005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define ttyname_r rpl_ttyname_r
173105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
173205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (ttyname_r, int,
173305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
173405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (ttyname_r, int,
173505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char *buf, size_t buflen));
173605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
173705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
173805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (ttyname_r, int,
173905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
174005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
174105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (ttyname_r, int,
174205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char *buf, size_t buflen));
174305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
174405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (ttyname_r);
174505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
174605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef ttyname_r
174705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_TTYNAME_R
174805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - "
174905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module ttyname_r for portability");
175005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
175105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
175205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
175305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
175405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
175505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
175605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
175705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef unlink
175805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define unlink rpl_unlink
175905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
176005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1)));
176105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (unlink, int, (char const *file));
176205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
176305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (unlink, int, (char const *file));
176405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
176505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (unlink);
176605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
176705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef unlink
176805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_UNLINK
176905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (unlink, "unlink is not portable - "
177005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module unlink for portability");
177105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
177205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
177305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
177405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
177505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
177605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
177705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
177805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef unlinkat
177905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define unlinkat rpl_unlinkat
178005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
178105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag)
178205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((2)));
178305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag));
178405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
178505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
178605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag)
178705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((2)));
178805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
178905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag));
179005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
179105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (unlinkat);
179205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
179305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef unlinkat
179405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_UNLINKAT
179505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - "
179605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module openat for portability");
179705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
179805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
179905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
180005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
180105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
180205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Pause the execution of the current thread for N microseconds.
180305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Returns 0 on completion, or -1 on range error.
180405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2001 specification
180505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://www.opengroup.org/susv3xsh/usleep.html>.  */
180605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
180705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
180805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef usleep
180905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define usleep rpl_usleep
181005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
181105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (usleep, int, (useconds_t n));
181205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (usleep, int, (useconds_t n));
181305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
181405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
181505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (usleep, int, (useconds_t n));
181605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
181705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (usleep, int, (useconds_t n));
181805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
181905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (usleep);
182005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
182105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef usleep
182205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_USLEEP
182305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (usleep, "usleep is unportable - "
182405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module usleep for portability");
182505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
182605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
182705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
182805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
182905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
183005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Write up to COUNT bytes starting at BUF to file descriptor FD.
183105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
183205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html>.  */
183305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
183405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
183505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef write
183605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define write rpl_write
183705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
183805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count)
183905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((2)));
184005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count));
184105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
184205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on mingw, the third parameter is
184305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                             unsigned int count
184405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and the return type is 'int'.  */
184505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count));
184605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
184705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (write);
184805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
184905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
185005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_INLINE_HEADER_END
185105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
185205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_UNISTD_H */
185305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_UNISTD_H */
1854