Blame gl/sys_stat.in.h

Packit 549fdc
/* Provide a more complete sys/stat header file.
Packit 549fdc
   Copyright (C) 2005-2016 Free Software Foundation, Inc.
Packit 549fdc
Packit 549fdc
   This program is free software; you can redistribute it and/or modify
Packit 549fdc
   it under the terms of the GNU Lesser General Public License as published by
Packit 549fdc
   the Free Software Foundation; either version 2.1, or (at your option)
Packit 549fdc
   any later version.
Packit 549fdc
Packit 549fdc
   This program is distributed in the hope that it will be useful,
Packit 549fdc
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 549fdc
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 549fdc
   GNU Lesser General Public License for more details.
Packit 549fdc
Packit 549fdc
   You should have received a copy of the GNU Lesser General Public License
Packit 549fdc
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
Packit 549fdc
Packit 549fdc
/* Written by Eric Blake, Paul Eggert, and Jim Meyering.  */
Packit 549fdc
Packit 549fdc
/* This file is supposed to be used on platforms where <sys/stat.h> is
Packit 549fdc
   incomplete.  It is intended to provide definitions and prototypes
Packit 549fdc
   needed by an application.  Start with what the system provides.  */
Packit 549fdc
Packit 549fdc
#if __GNUC__ >= 3
Packit 549fdc
@PRAGMA_SYSTEM_HEADER@
Packit 549fdc
#endif
Packit 549fdc
@PRAGMA_COLUMNS@
Packit 549fdc
Packit 549fdc
#if defined __need_system_sys_stat_h
Packit 549fdc
/* Special invocation convention.  */
Packit 549fdc
Packit 549fdc
#@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@
Packit 549fdc
Packit 549fdc
#else
Packit 549fdc
/* Normal invocation convention.  */
Packit 549fdc
Packit 549fdc
#ifndef _@GUARD_PREFIX@_SYS_STAT_H
Packit 549fdc
Packit 549fdc
/* Get nlink_t.
Packit 549fdc
   May also define off_t to a 64-bit type on native Windows.  */
Packit 549fdc
#include <sys/types.h>
Packit 549fdc
Packit 549fdc
/* Get struct timespec.  */
Packit 549fdc
#include <time.h>
Packit 549fdc
Packit 549fdc
/* The include_next requires a split double-inclusion guard.  */
Packit 549fdc
#@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@
Packit 549fdc
Packit 549fdc
#ifndef _@GUARD_PREFIX@_SYS_STAT_H
Packit 549fdc
#define _@GUARD_PREFIX@_SYS_STAT_H
Packit 549fdc
Packit 549fdc
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
Packit 549fdc
Packit 549fdc
/* The definition of _GL_ARG_NONNULL is copied here.  */
Packit 549fdc
Packit 549fdc
/* The definition of _GL_WARN_ON_USE is copied here.  */
Packit 549fdc
Packit 549fdc
/* Before doing "#define mkdir rpl_mkdir" below, we need to include all
Packit 549fdc
   headers that may declare mkdir().  Native Windows platforms declare mkdir
Packit 549fdc
   in <io.h> and/or <direct.h>, not in <unistd.h>.  */
Packit 549fdc
#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
Packit 549fdc
# include <io.h>     /* mingw32, mingw64 */
Packit 549fdc
# include <direct.h> /* mingw64, MSVC 9 */
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
/* Native Windows platforms declare umask() in <io.h>.  */
Packit 549fdc
#if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
Packit 549fdc
# include <io.h>
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
/* Large File Support on native Windows.  */
Packit 549fdc
#if @WINDOWS_64_BIT_ST_SIZE@
Packit 549fdc
# define stat _stati64
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_IFIFO
Packit 549fdc
# ifdef _S_IFIFO
Packit 549fdc
#  define S_IFIFO _S_IFIFO
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_IFMT
Packit 549fdc
# define S_IFMT 0170000
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#if STAT_MACROS_BROKEN
Packit 549fdc
# undef S_ISBLK
Packit 549fdc
# undef S_ISCHR
Packit 549fdc
# undef S_ISDIR
Packit 549fdc
# undef S_ISFIFO
Packit 549fdc
# undef S_ISLNK
Packit 549fdc
# undef S_ISNAM
Packit 549fdc
# undef S_ISMPB
Packit 549fdc
# undef S_ISMPC
Packit 549fdc
# undef S_ISNWK
Packit 549fdc
# undef S_ISREG
Packit 549fdc
# undef S_ISSOCK
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISBLK
Packit 549fdc
# ifdef S_IFBLK
Packit 549fdc
#  define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
Packit 549fdc
# else
Packit 549fdc
#  define S_ISBLK(m) 0
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISCHR
Packit 549fdc
# ifdef S_IFCHR
Packit 549fdc
#  define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
Packit 549fdc
# else
Packit 549fdc
#  define S_ISCHR(m) 0
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISDIR
Packit 549fdc
# ifdef S_IFDIR
Packit 549fdc
#  define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
Packit 549fdc
# else
Packit 549fdc
#  define S_ISDIR(m) 0
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISDOOR /* Solaris 2.5 and up */
Packit 549fdc
# define S_ISDOOR(m) 0
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISFIFO
Packit 549fdc
# ifdef S_IFIFO
Packit 549fdc
#  define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
Packit 549fdc
# else
Packit 549fdc
#  define S_ISFIFO(m) 0
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISLNK
Packit 549fdc
# ifdef S_IFLNK
Packit 549fdc
#  define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
Packit 549fdc
# else
Packit 549fdc
#  define S_ISLNK(m) 0
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISMPB /* V7 */
Packit 549fdc
# ifdef S_IFMPB
Packit 549fdc
#  define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
Packit 549fdc
#  define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
Packit 549fdc
# else
Packit 549fdc
#  define S_ISMPB(m) 0
Packit 549fdc
#  define S_ISMPC(m) 0
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISMPX /* AIX */
Packit 549fdc
# define S_ISMPX(m) 0
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISNAM /* Xenix */
Packit 549fdc
# ifdef S_IFNAM
Packit 549fdc
#  define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM)
Packit 549fdc
# else
Packit 549fdc
#  define S_ISNAM(m) 0
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISNWK /* HP/UX */
Packit 549fdc
# ifdef S_IFNWK
Packit 549fdc
#  define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
Packit 549fdc
# else
Packit 549fdc
#  define S_ISNWK(m) 0
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISPORT /* Solaris 10 and up */
Packit 549fdc
# define S_ISPORT(m) 0
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISREG
Packit 549fdc
# ifdef S_IFREG
Packit 549fdc
#  define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
Packit 549fdc
# else
Packit 549fdc
#  define S_ISREG(m) 0
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_ISSOCK
Packit 549fdc
# ifdef S_IFSOCK
Packit 549fdc
#  define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
Packit 549fdc
# else
Packit 549fdc
#  define S_ISSOCK(m) 0
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#ifndef S_TYPEISMQ
Packit 549fdc
# define S_TYPEISMQ(p) 0
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_TYPEISTMO
Packit 549fdc
# define S_TYPEISTMO(p) 0
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#ifndef S_TYPEISSEM
Packit 549fdc
# ifdef S_INSEM
Packit 549fdc
#  define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM)
Packit 549fdc
# else
Packit 549fdc
#  define S_TYPEISSEM(p) 0
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_TYPEISSHM
Packit 549fdc
# ifdef S_INSHD
Packit 549fdc
#  define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD)
Packit 549fdc
# else
Packit 549fdc
#  define S_TYPEISSHM(p) 0
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
/* high performance ("contiguous data") */
Packit 549fdc
#ifndef S_ISCTG
Packit 549fdc
# define S_ISCTG(p) 0
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
/* Cray DMF (data migration facility): off line, with data  */
Packit 549fdc
#ifndef S_ISOFD
Packit 549fdc
# define S_ISOFD(p) 0
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
/* Cray DMF (data migration facility): off line, with no data  */
Packit 549fdc
#ifndef S_ISOFL
Packit 549fdc
# define S_ISOFL(p) 0
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
/* 4.4BSD whiteout */
Packit 549fdc
#ifndef S_ISWHT
Packit 549fdc
# define S_ISWHT(m) 0
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
/* If any of the following are undefined,
Packit 549fdc
   define them to their de facto standard values.  */
Packit 549fdc
#if !S_ISUID
Packit 549fdc
# define S_ISUID 04000
Packit 549fdc
#endif
Packit 549fdc
#if !S_ISGID
Packit 549fdc
# define S_ISGID 02000
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
/* S_ISVTX is a common extension to POSIX.  */
Packit 549fdc
#ifndef S_ISVTX
Packit 549fdc
# define S_ISVTX 01000
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#if !S_IRUSR && S_IREAD
Packit 549fdc
# define S_IRUSR S_IREAD
Packit 549fdc
#endif
Packit 549fdc
#if !S_IRUSR
Packit 549fdc
# define S_IRUSR 00400
Packit 549fdc
#endif
Packit 549fdc
#if !S_IRGRP
Packit 549fdc
# define S_IRGRP (S_IRUSR >> 3)
Packit 549fdc
#endif
Packit 549fdc
#if !S_IROTH
Packit 549fdc
# define S_IROTH (S_IRUSR >> 6)
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#if !S_IWUSR && S_IWRITE
Packit 549fdc
# define S_IWUSR S_IWRITE
Packit 549fdc
#endif
Packit 549fdc
#if !S_IWUSR
Packit 549fdc
# define S_IWUSR 00200
Packit 549fdc
#endif
Packit 549fdc
#if !S_IWGRP
Packit 549fdc
# define S_IWGRP (S_IWUSR >> 3)
Packit 549fdc
#endif
Packit 549fdc
#if !S_IWOTH
Packit 549fdc
# define S_IWOTH (S_IWUSR >> 6)
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#if !S_IXUSR && S_IEXEC
Packit 549fdc
# define S_IXUSR S_IEXEC
Packit 549fdc
#endif
Packit 549fdc
#if !S_IXUSR
Packit 549fdc
# define S_IXUSR 00100
Packit 549fdc
#endif
Packit 549fdc
#if !S_IXGRP
Packit 549fdc
# define S_IXGRP (S_IXUSR >> 3)
Packit 549fdc
#endif
Packit 549fdc
#if !S_IXOTH
Packit 549fdc
# define S_IXOTH (S_IXUSR >> 6)
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#if !S_IRWXU
Packit 549fdc
# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
Packit 549fdc
#endif
Packit 549fdc
#if !S_IRWXG
Packit 549fdc
# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
Packit 549fdc
#endif
Packit 549fdc
#if !S_IRWXO
Packit 549fdc
# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
/* S_IXUGO is a common extension to POSIX.  */
Packit 549fdc
#if !S_IXUGO
Packit 549fdc
# define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef S_IRWXUGO
Packit 549fdc
# define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO)
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
/* Macros for futimens and utimensat.  */
Packit 549fdc
#ifndef UTIME_NOW
Packit 549fdc
# define UTIME_NOW (-1)
Packit 549fdc
# define UTIME_OMIT (-2)
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_FCHMODAT@
Packit 549fdc
# if !@HAVE_FCHMODAT@
Packit 549fdc
_GL_FUNCDECL_SYS (fchmodat, int,
Packit 549fdc
                  (int fd, char const *file, mode_t mode, int flag)
Packit 549fdc
                  _GL_ARG_NONNULL ((2)));
Packit 549fdc
# endif
Packit 549fdc
_GL_CXXALIAS_SYS (fchmodat, int,
Packit 549fdc
                  (int fd, char const *file, mode_t mode, int flag));
Packit 549fdc
_GL_CXXALIASWARN (fchmodat);
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef fchmodat
Packit 549fdc
# if HAVE_RAW_DECL_FCHMODAT
Packit 549fdc
_GL_WARN_ON_USE (fchmodat, "fchmodat is not portable - "
Packit 549fdc
                 "use gnulib module openat for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_FSTAT@
Packit 549fdc
# if @REPLACE_FSTAT@
Packit 549fdc
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 549fdc
#   undef fstat
Packit 549fdc
#   define fstat rpl_fstat
Packit 549fdc
#  endif
Packit 549fdc
_GL_FUNCDECL_RPL (fstat, int, (int fd, struct stat *buf) _GL_ARG_NONNULL ((2)));
Packit 549fdc
_GL_CXXALIAS_RPL (fstat, int, (int fd, struct stat *buf));
Packit 549fdc
# else
Packit 549fdc
_GL_CXXALIAS_SYS (fstat, int, (int fd, struct stat *buf));
Packit 549fdc
# endif
Packit 549fdc
_GL_CXXALIASWARN (fstat);
Packit 549fdc
#elif @WINDOWS_64_BIT_ST_SIZE@
Packit 549fdc
/* Above, we define stat to _stati64.  */
Packit 549fdc
# define fstat _fstati64
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef fstat
Packit 549fdc
# if HAVE_RAW_DECL_FSTAT
Packit 549fdc
_GL_WARN_ON_USE (fstat, "fstat has portability problems - "
Packit 549fdc
                 "use gnulib module fstat for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_FSTATAT@
Packit 549fdc
# if @REPLACE_FSTATAT@
Packit 549fdc
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 549fdc
#   undef fstatat
Packit 549fdc
#   define fstatat rpl_fstatat
Packit 549fdc
#  endif
Packit 549fdc
_GL_FUNCDECL_RPL (fstatat, int,
Packit 549fdc
                  (int fd, char const *name, struct stat *st, int flags)
Packit 549fdc
                  _GL_ARG_NONNULL ((2, 3)));
Packit 549fdc
_GL_CXXALIAS_RPL (fstatat, int,
Packit 549fdc
                  (int fd, char const *name, struct stat *st, int flags));
Packit 549fdc
# else
Packit 549fdc
#  if !@HAVE_FSTATAT@
Packit 549fdc
_GL_FUNCDECL_SYS (fstatat, int,
Packit 549fdc
                  (int fd, char const *name, struct stat *st, int flags)
Packit 549fdc
                  _GL_ARG_NONNULL ((2, 3)));
Packit 549fdc
#  endif
Packit 549fdc
_GL_CXXALIAS_SYS (fstatat, int,
Packit 549fdc
                  (int fd, char const *name, struct stat *st, int flags));
Packit 549fdc
# endif
Packit 549fdc
_GL_CXXALIASWARN (fstatat);
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef fstatat
Packit 549fdc
# if HAVE_RAW_DECL_FSTATAT
Packit 549fdc
_GL_WARN_ON_USE (fstatat, "fstatat is not portable - "
Packit 549fdc
                 "use gnulib module openat for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_FUTIMENS@
Packit 549fdc
/* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our futimens
Packit 549fdc
   implementation relies on futimesat, which on Solaris 10 makes an invocation
Packit 549fdc
   to futimens that is meant to invoke the libc's futimens(), not gnulib's
Packit 549fdc
   futimens().  */
Packit 549fdc
# if @REPLACE_FUTIMENS@ || (!@HAVE_FUTIMENS@ && defined __sun)
Packit 549fdc
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 549fdc
#   undef futimens
Packit 549fdc
#   define futimens rpl_futimens
Packit 549fdc
#  endif
Packit 549fdc
_GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2]));
Packit 549fdc
_GL_CXXALIAS_RPL (futimens, int, (int fd, struct timespec const times[2]));
Packit 549fdc
# else
Packit 549fdc
#  if !@HAVE_FUTIMENS@
Packit 549fdc
_GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2]));
Packit 549fdc
#  endif
Packit 549fdc
_GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2]));
Packit 549fdc
# endif
Packit 549fdc
# if @HAVE_FUTIMENS@
Packit 549fdc
_GL_CXXALIASWARN (futimens);
Packit 549fdc
# endif
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef futimens
Packit 549fdc
# if HAVE_RAW_DECL_FUTIMENS
Packit 549fdc
_GL_WARN_ON_USE (futimens, "futimens is not portable - "
Packit 549fdc
                 "use gnulib module futimens for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_LCHMOD@
Packit 549fdc
/* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME
Packit 549fdc
   denotes a symbolic link.  */
Packit 549fdc
# if !@HAVE_LCHMOD@
Packit 549fdc
/* The lchmod replacement follows symbolic links.  Callers should take
Packit 549fdc
   this into account; lchmod should be applied only to arguments that
Packit 549fdc
   are known to not be symbolic links.  On hosts that lack lchmod,
Packit 549fdc
   this can lead to race conditions between the check and the
Packit 549fdc
   invocation of lchmod, but we know of no workarounds that are
Packit 549fdc
   reliable in general.  You might try requesting support for lchmod
Packit 549fdc
   from your operating system supplier.  */
Packit 549fdc
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 549fdc
#   define lchmod chmod
Packit 549fdc
#  endif
Packit 549fdc
/* Need to cast, because on mingw, the second parameter of chmod is
Packit 549fdc
                                                int mode.  */
Packit 549fdc
_GL_CXXALIAS_RPL_CAST_1 (lchmod, chmod, int,
Packit 549fdc
                         (const char *filename, mode_t mode));
Packit 549fdc
# else
Packit 549fdc
#  if 0 /* assume already declared */
Packit 549fdc
_GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode)
Packit 549fdc
                               _GL_ARG_NONNULL ((1)));
Packit 549fdc
#  endif
Packit 549fdc
_GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode));
Packit 549fdc
# endif
Packit 549fdc
# if @HAVE_LCHMOD@
Packit 549fdc
_GL_CXXALIASWARN (lchmod);
Packit 549fdc
# endif
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef lchmod
Packit 549fdc
# if HAVE_RAW_DECL_LCHMOD
Packit 549fdc
_GL_WARN_ON_USE (lchmod, "lchmod is unportable - "
Packit 549fdc
                 "use gnulib module lchmod for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_LSTAT@
Packit 549fdc
# if ! @HAVE_LSTAT@
Packit 549fdc
/* mingw does not support symlinks, therefore it does not have lstat.  But
Packit 549fdc
   without links, stat does just fine.  */
Packit 549fdc
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 549fdc
#   define lstat stat
Packit 549fdc
#  endif
Packit 549fdc
_GL_CXXALIAS_RPL_1 (lstat, stat, int, (const char *name, struct stat *buf));
Packit 549fdc
# elif @REPLACE_LSTAT@
Packit 549fdc
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 549fdc
#   undef lstat
Packit 549fdc
#   define lstat rpl_lstat
Packit 549fdc
#  endif
Packit 549fdc
_GL_FUNCDECL_RPL (lstat, int, (const char *name, struct stat *buf)
Packit 549fdc
                              _GL_ARG_NONNULL ((1, 2)));
Packit 549fdc
_GL_CXXALIAS_RPL (lstat, int, (const char *name, struct stat *buf));
Packit 549fdc
# else
Packit 549fdc
_GL_CXXALIAS_SYS (lstat, int, (const char *name, struct stat *buf));
Packit 549fdc
# endif
Packit 549fdc
# if @HAVE_LSTAT@
Packit 549fdc
_GL_CXXALIASWARN (lstat);
Packit 549fdc
# endif
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef lstat
Packit 549fdc
# if HAVE_RAW_DECL_LSTAT
Packit 549fdc
_GL_WARN_ON_USE (lstat, "lstat is unportable - "
Packit 549fdc
                 "use gnulib module lstat for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @REPLACE_MKDIR@
Packit 549fdc
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 549fdc
#  undef mkdir
Packit 549fdc
#  define mkdir rpl_mkdir
Packit 549fdc
# endif
Packit 549fdc
_GL_FUNCDECL_RPL (mkdir, int, (char const *name, mode_t mode)
Packit 549fdc
                              _GL_ARG_NONNULL ((1)));
Packit 549fdc
_GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode));
Packit 549fdc
#else
Packit 549fdc
/* mingw's _mkdir() function has 1 argument, but we pass 2 arguments.
Packit 549fdc
   Additionally, it declares _mkdir (and depending on compile flags, an
Packit 549fdc
   alias mkdir), only in the nonstandard includes <direct.h> and <io.h>,
Packit 549fdc
   which are included above.  */
Packit 549fdc
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
Packit 549fdc
Packit 549fdc
#  if !GNULIB_defined_rpl_mkdir
Packit 549fdc
static int
Packit 549fdc
rpl_mkdir (char const *name, mode_t mode)
Packit 549fdc
{
Packit 549fdc
  return _mkdir (name);
Packit 549fdc
}
Packit 549fdc
#   define GNULIB_defined_rpl_mkdir 1
Packit 549fdc
#  endif
Packit 549fdc
Packit 549fdc
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 549fdc
#   define mkdir rpl_mkdir
Packit 549fdc
#  endif
Packit 549fdc
_GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode));
Packit 549fdc
# else
Packit 549fdc
_GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode));
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
_GL_CXXALIASWARN (mkdir);
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_MKDIRAT@
Packit 549fdc
# if !@HAVE_MKDIRAT@
Packit 549fdc
_GL_FUNCDECL_SYS (mkdirat, int, (int fd, char const *file, mode_t mode)
Packit 549fdc
                                _GL_ARG_NONNULL ((2)));
Packit 549fdc
# endif
Packit 549fdc
_GL_CXXALIAS_SYS (mkdirat, int, (int fd, char const *file, mode_t mode));
Packit 549fdc
_GL_CXXALIASWARN (mkdirat);
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef mkdirat
Packit 549fdc
# if HAVE_RAW_DECL_MKDIRAT
Packit 549fdc
_GL_WARN_ON_USE (mkdirat, "mkdirat is not portable - "
Packit 549fdc
                 "use gnulib module openat for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_MKFIFO@
Packit 549fdc
# if @REPLACE_MKFIFO@
Packit 549fdc
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 549fdc
#   undef mkfifo
Packit 549fdc
#   define mkfifo rpl_mkfifo
Packit 549fdc
#  endif
Packit 549fdc
_GL_FUNCDECL_RPL (mkfifo, int, (char const *file, mode_t mode)
Packit 549fdc
                               _GL_ARG_NONNULL ((1)));
Packit 549fdc
_GL_CXXALIAS_RPL (mkfifo, int, (char const *file, mode_t mode));
Packit 549fdc
# else
Packit 549fdc
#  if !@HAVE_MKFIFO@
Packit 549fdc
_GL_FUNCDECL_SYS (mkfifo, int, (char const *file, mode_t mode)
Packit 549fdc
                               _GL_ARG_NONNULL ((1)));
Packit 549fdc
#  endif
Packit 549fdc
_GL_CXXALIAS_SYS (mkfifo, int, (char const *file, mode_t mode));
Packit 549fdc
# endif
Packit 549fdc
_GL_CXXALIASWARN (mkfifo);
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef mkfifo
Packit 549fdc
# if HAVE_RAW_DECL_MKFIFO
Packit 549fdc
_GL_WARN_ON_USE (mkfifo, "mkfifo is not portable - "
Packit 549fdc
                 "use gnulib module mkfifo for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_MKFIFOAT@
Packit 549fdc
# if !@HAVE_MKFIFOAT@
Packit 549fdc
_GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)
Packit 549fdc
                                 _GL_ARG_NONNULL ((2)));
Packit 549fdc
# endif
Packit 549fdc
_GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode));
Packit 549fdc
_GL_CXXALIASWARN (mkfifoat);
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef mkfifoat
Packit 549fdc
# if HAVE_RAW_DECL_MKFIFOAT
Packit 549fdc
_GL_WARN_ON_USE (mkfifoat, "mkfifoat is not portable - "
Packit 549fdc
                 "use gnulib module mkfifoat for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_MKNOD@
Packit 549fdc
# if @REPLACE_MKNOD@
Packit 549fdc
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 549fdc
#   undef mknod
Packit 549fdc
#   define mknod rpl_mknod
Packit 549fdc
#  endif
Packit 549fdc
_GL_FUNCDECL_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev)
Packit 549fdc
                              _GL_ARG_NONNULL ((1)));
Packit 549fdc
_GL_CXXALIAS_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev));
Packit 549fdc
# else
Packit 549fdc
#  if !@HAVE_MKNOD@
Packit 549fdc
_GL_FUNCDECL_SYS (mknod, int, (char const *file, mode_t mode, dev_t dev)
Packit 549fdc
                              _GL_ARG_NONNULL ((1)));
Packit 549fdc
#  endif
Packit 549fdc
/* Need to cast, because on OSF/1 5.1, the third parameter is '...'.  */
Packit 549fdc
_GL_CXXALIAS_SYS_CAST (mknod, int, (char const *file, mode_t mode, dev_t dev));
Packit 549fdc
# endif
Packit 549fdc
_GL_CXXALIASWARN (mknod);
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef mknod
Packit 549fdc
# if HAVE_RAW_DECL_MKNOD
Packit 549fdc
_GL_WARN_ON_USE (mknod, "mknod is not portable - "
Packit 549fdc
                 "use gnulib module mknod for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_MKNODAT@
Packit 549fdc
# if !@HAVE_MKNODAT@
Packit 549fdc
_GL_FUNCDECL_SYS (mknodat, int,
Packit 549fdc
                  (int fd, char const *file, mode_t mode, dev_t dev)
Packit 549fdc
                  _GL_ARG_NONNULL ((2)));
Packit 549fdc
# endif
Packit 549fdc
_GL_CXXALIAS_SYS (mknodat, int,
Packit 549fdc
                  (int fd, char const *file, mode_t mode, dev_t dev));
Packit 549fdc
_GL_CXXALIASWARN (mknodat);
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef mknodat
Packit 549fdc
# if HAVE_RAW_DECL_MKNODAT
Packit 549fdc
_GL_WARN_ON_USE (mknodat, "mknodat is not portable - "
Packit 549fdc
                 "use gnulib module mkfifoat for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_STAT@
Packit 549fdc
# if @REPLACE_STAT@
Packit 549fdc
/* We can't use the object-like #define stat rpl_stat, because of
Packit 549fdc
   struct stat.  This means that rpl_stat will not be used if the user
Packit 549fdc
   does (stat)(a,b).  Oh well.  */
Packit 549fdc
#  if defined _AIX && defined stat && defined _LARGE_FILES
Packit 549fdc
    /* With _LARGE_FILES defined, AIX (only) defines stat to stat64,
Packit 549fdc
       so we have to replace stat64() instead of stat(). */
Packit 549fdc
#   undef stat64
Packit 549fdc
#   define stat64(name, st) rpl_stat (name, st)
Packit 549fdc
#  elif @WINDOWS_64_BIT_ST_SIZE@
Packit 549fdc
    /* Above, we define stat to _stati64.  */
Packit 549fdc
#   if defined __MINGW32__ && defined _stati64
Packit 549fdc
#    ifndef _USE_32BIT_TIME_T
Packit 549fdc
      /* The system headers define _stati64 to _stat64.  */
Packit 549fdc
#     undef _stat64
Packit 549fdc
#     define _stat64(name, st) rpl_stat (name, st)
Packit 549fdc
#    endif
Packit 549fdc
#   elif defined _MSC_VER && defined _stati64
Packit 549fdc
#    ifdef _USE_32BIT_TIME_T
Packit 549fdc
      /* The system headers define _stati64 to _stat32i64.  */
Packit 549fdc
#     undef _stat32i64
Packit 549fdc
#     define _stat32i64(name, st) rpl_stat (name, st)
Packit 549fdc
#    else
Packit 549fdc
      /* The system headers define _stati64 to _stat64.  */
Packit 549fdc
#     undef _stat64
Packit 549fdc
#     define _stat64(name, st) rpl_stat (name, st)
Packit 549fdc
#    endif
Packit 549fdc
#   else
Packit 549fdc
#    undef _stati64
Packit 549fdc
#    define _stati64(name, st) rpl_stat (name, st)
Packit 549fdc
#   endif
Packit 549fdc
#  elif defined __MINGW32__ && defined stat
Packit 549fdc
#   ifdef _USE_32BIT_TIME_T
Packit 549fdc
     /* The system headers define stat to _stat32i64.  */
Packit 549fdc
#    undef _stat32i64
Packit 549fdc
#    define _stat32i64(name, st) rpl_stat (name, st)
Packit 549fdc
#   else
Packit 549fdc
     /* The system headers define stat to _stat64.  */
Packit 549fdc
#    undef _stat64
Packit 549fdc
#    define _stat64(name, st) rpl_stat (name, st)
Packit 549fdc
#   endif
Packit 549fdc
#  elif defined _MSC_VER && defined stat
Packit 549fdc
#   ifdef _USE_32BIT_TIME_T
Packit 549fdc
     /* The system headers define stat to _stat32.  */
Packit 549fdc
#    undef _stat32
Packit 549fdc
#    define _stat32(name, st) rpl_stat (name, st)
Packit 549fdc
#   else
Packit 549fdc
     /* The system headers define stat to _stat64i32.  */
Packit 549fdc
#    undef _stat64i32
Packit 549fdc
#    define _stat64i32(name, st) rpl_stat (name, st)
Packit 549fdc
#   endif
Packit 549fdc
#  else /* !(_AIX ||__MINGW32__ ||  _MSC_VER) */
Packit 549fdc
#   undef stat
Packit 549fdc
#   define stat(name, st) rpl_stat (name, st)
Packit 549fdc
#  endif /* !_LARGE_FILES */
Packit 549fdc
_GL_EXTERN_C int stat (const char *name, struct stat *buf)
Packit 549fdc
                      _GL_ARG_NONNULL ((1, 2));
Packit 549fdc
# endif
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef stat
Packit 549fdc
# if HAVE_RAW_DECL_STAT
Packit 549fdc
_GL_WARN_ON_USE (stat, "stat is unportable - "
Packit 549fdc
                 "use gnulib module stat for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#if @GNULIB_UTIMENSAT@
Packit 549fdc
/* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our utimensat
Packit 549fdc
   implementation relies on futimesat, which on Solaris 10 makes an invocation
Packit 549fdc
   to utimensat that is meant to invoke the libc's utimensat(), not gnulib's
Packit 549fdc
   utimensat().  */
Packit 549fdc
# if @REPLACE_UTIMENSAT@ || (!@HAVE_UTIMENSAT@ && defined __sun)
Packit 549fdc
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 549fdc
#   undef utimensat
Packit 549fdc
#   define utimensat rpl_utimensat
Packit 549fdc
#  endif
Packit 549fdc
_GL_FUNCDECL_RPL (utimensat, int, (int fd, char const *name,
Packit 549fdc
                                   struct timespec const times[2], int flag)
Packit 549fdc
                                  _GL_ARG_NONNULL ((2)));
Packit 549fdc
_GL_CXXALIAS_RPL (utimensat, int, (int fd, char const *name,
Packit 549fdc
                                   struct timespec const times[2], int flag));
Packit 549fdc
# else
Packit 549fdc
#  if !@HAVE_UTIMENSAT@
Packit 549fdc
_GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name,
Packit 549fdc
                                   struct timespec const times[2], int flag)
Packit 549fdc
                                  _GL_ARG_NONNULL ((2)));
Packit 549fdc
#  endif
Packit 549fdc
_GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name,
Packit 549fdc
                                   struct timespec const times[2], int flag));
Packit 549fdc
# endif
Packit 549fdc
# if @HAVE_UTIMENSAT@
Packit 549fdc
_GL_CXXALIASWARN (utimensat);
Packit 549fdc
# endif
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
# undef utimensat
Packit 549fdc
# if HAVE_RAW_DECL_UTIMENSAT
Packit 549fdc
_GL_WARN_ON_USE (utimensat, "utimensat is not portable - "
Packit 549fdc
                 "use gnulib module utimensat for portability");
Packit 549fdc
# endif
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
Packit 549fdc
#endif /* _@GUARD_PREFIX@_SYS_STAT_H */
Packit 549fdc
#endif /* _@GUARD_PREFIX@_SYS_STAT_H */
Packit 549fdc
#endif