105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Provide a more complete sys/stat header file. 205436638acc7c010349a69c3395f1a57c642dc62Ying Wang Copyright (C) 2005-2012 Free Software Foundation, Inc. 305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 405436638acc7c010349a69c3395f1a57c642dc62Ying Wang This program is free software; you can redistribute it and/or modify 505436638acc7c010349a69c3395f1a57c642dc62Ying Wang it under the terms of the GNU General Public License as published by 605436638acc7c010349a69c3395f1a57c642dc62Ying Wang the Free Software Foundation; either version 3, or (at your option) 705436638acc7c010349a69c3395f1a57c642dc62Ying Wang any later version. 805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 905436638acc7c010349a69c3395f1a57c642dc62Ying Wang This program is distributed in the hope that it will be useful, 1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang but WITHOUT ANY WARRANTY; without even the implied warranty of 1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang GNU General Public License for more details. 1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang You should have received a copy of the GNU General Public License 1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang along with this program; if not, see <http://www.gnu.org/licenses/>. */ 1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Written by Eric Blake, Paul Eggert, and Jim Meyering. */ 1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This file is supposed to be used on platforms where <sys/stat.h> is 2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang incomplete. It is intended to provide definitions and prototypes 2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang needed by an application. Start with what the system provides. */ 2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ >= 3 2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang@PRAGMA_SYSTEM_HEADER@ 2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang@PRAGMA_COLUMNS@ 2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __need_system_sys_stat_h 2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Special invocation convention. */ 3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ 3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else 3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Normal invocation convention. */ 3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _@GUARD_PREFIX@_SYS_STAT_H 3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get nlink_t. 3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang May also define off_t to a 64-bit type on native Windows. */ 4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <sys/types.h> 4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get struct timespec. */ 4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <time.h> 4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The include_next requires a split double-inclusion guard. */ 4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ 4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _@GUARD_PREFIX@_SYS_STAT_H 4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _@GUARD_PREFIX@_SYS_STAT_H 5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ 5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_ARG_NONNULL is copied here. */ 5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_WARN_ON_USE is copied here. */ 5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Before doing "#define mkdir rpl_mkdir" below, we need to include all 5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang headers that may declare mkdir(). Native Windows platforms declare mkdir 5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang in <io.h> and/or <direct.h>, not in <unistd.h>. */ 6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ 6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <io.h> /* mingw32, mingw64 */ 6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <direct.h> /* mingw64, MSVC 9 */ 6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Native Windows platforms declare umask() in <io.h>. */ 6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) 6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <io.h> 6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Large File Support on native Windows. */ 7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @WINDOWS_64_BIT_ST_SIZE@ 7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define stat _stati64 7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_IFIFO 7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef _S_IFIFO 7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IFIFO _S_IFIFO 7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_IFMT 8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IFMT 0170000 8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if STAT_MACROS_BROKEN 8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef S_ISBLK 8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef S_ISCHR 8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef S_ISDIR 8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef S_ISFIFO 9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef S_ISLNK 9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef S_ISNAM 9205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef S_ISMPB 9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef S_ISMPC 9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef S_ISNWK 9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef S_ISREG 9605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef S_ISSOCK 9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISBLK 10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef S_IFBLK 10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) 10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISBLK(m) 0 10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISCHR 10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef S_IFCHR 10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) 11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISCHR(m) 0 11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISDIR 11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef S_IFDIR 11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) 11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISDIR(m) 0 12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISDOOR /* Solaris 2.5 and up */ 12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISDOOR(m) 0 12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISFIFO 12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef S_IFIFO 12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) 13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISFIFO(m) 0 13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISLNK 13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef S_IFLNK 13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) 13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISLNK(m) 0 14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISMPB /* V7 */ 14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef S_IFMPB 14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) 14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) 14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISMPB(m) 0 14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISMPC(m) 0 15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISNAM /* Xenix */ 15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef S_IFNAM 15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM) 15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISNAM(m) 0 15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISNWK /* HP/UX */ 16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef S_IFNWK 16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) 16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISNWK(m) 0 16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISPORT /* Solaris 10 and up */ 17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISPORT(m) 0 17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISREG 17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef S_IFREG 17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) 17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISREG(m) 0 17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISSOCK 18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef S_IFSOCK 18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) 18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISSOCK(m) 0 18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_TYPEISMQ 19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_TYPEISMQ(p) 0 19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_TYPEISTMO 19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_TYPEISTMO(p) 0 19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_TYPEISSEM 20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef S_INSEM 20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM) 20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_TYPEISSEM(p) 0 20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_TYPEISSHM 20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef S_INSHD 20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD) 21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_TYPEISSHM(p) 0 21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* high performance ("contiguous data") */ 21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISCTG 21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISCTG(p) 0 21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Cray DMF (data migration facility): off line, with data */ 22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISOFD 22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISOFD(p) 0 22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Cray DMF (data migration facility): off line, with no data */ 22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISOFL 22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISOFL(p) 0 22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 4.4BSD whiteout */ 23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISWHT 23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISWHT(m) 0 23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* If any of the following are undefined, 23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang define them to their de facto standard values. */ 23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_ISUID 23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISUID 04000 23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_ISGID 24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISGID 02000 24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* S_ISVTX is a common extension to POSIX. */ 24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_ISVTX 24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_ISVTX 01000 24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IRUSR && S_IREAD 25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IRUSR S_IREAD 25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IRUSR 25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IRUSR 00400 25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IRGRP 25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IRGRP (S_IRUSR >> 3) 25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IROTH 25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IROTH (S_IRUSR >> 6) 26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IWUSR && S_IWRITE 26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IWUSR S_IWRITE 26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IWUSR 26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IWUSR 00200 26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IWGRP 26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IWGRP (S_IWUSR >> 3) 27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IWOTH 27205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IWOTH (S_IWUSR >> 6) 27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IXUSR && S_IEXEC 27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IXUSR S_IEXEC 27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IXUSR 27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IXUSR 00100 28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IXGRP 28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IXGRP (S_IXUSR >> 3) 28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IXOTH 28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IXOTH (S_IXUSR >> 6) 28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IRWXU 28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) 29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IRWXG 29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) 29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IRWXO 29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) 29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* S_IXUGO is a common extension to POSIX. */ 29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !S_IXUGO 30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) 30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef S_IRWXUGO 30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO) 30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Macros for futimens and utimensat. */ 30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef UTIME_NOW 30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define UTIME_NOW (-1) 31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define UTIME_OMIT (-2) 31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_FCHMODAT@ 31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_FCHMODAT@ 31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fchmodat, int, 31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (int fd, char const *file, mode_t mode, int flag) 31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fchmodat, int, 32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang (int fd, char const *file, mode_t mode, int flag)); 32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fchmodat); 32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fchmodat 32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FCHMODAT 32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fchmodat, "fchmodat is not portable - " 32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module openat for portability"); 32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_FSTAT@ 33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_FSTAT@ 33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fstat 33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define fstat rpl_fstat 33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fstat, int, (int fd, struct stat *buf) _GL_ARG_NONNULL ((2))); 33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fstat, int, (int fd, struct stat *buf)); 34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fstat, int, (int fd, struct stat *buf)); 34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 34305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fstat); 34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif @WINDOWS_64_BIT_ST_SIZE@ 34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Above, we define stat to _stati64. */ 34605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define fstat _fstati64 34705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fstat 34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FSTAT 35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fstat, "fstat has portability problems - " 35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module fstat for portability"); 35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_FSTATAT@ 35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_FSTATAT@ 35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fstatat 36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define fstatat rpl_fstatat 36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 36205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fstatat, int, 36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang (int fd, char const *name, struct stat *st, int flags) 36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2, 3))); 36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fstatat, int, 36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang (int fd, char const *name, struct stat *st, int flags)); 36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_FSTATAT@ 36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fstatat, int, 37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang (int fd, char const *name, struct stat *st, int flags) 37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2, 3))); 37205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fstatat, int, 37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang (int fd, char const *name, struct stat *st, int flags)); 37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fstatat); 37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 37805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fstatat 37905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FSTATAT 38005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fstatat, "fstatat is not portable - " 38105436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module openat for portability"); 38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_FUTIMENS@ 38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our futimens 38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang implementation relies on futimesat, which on Solaris 10 makes an invocation 38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang to futimens that is meant to invoke the libc's futimens(), not gnulib's 39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang futimens(). */ 39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_FUTIMENS@ || (!@HAVE_FUTIMENS@ && defined __sun) 39205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 39305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef futimens 39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define futimens rpl_futimens 39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2])); 39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (futimens, int, (int fd, struct timespec const times[2])); 39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_FUTIMENS@ 40005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2])); 40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 40205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2])); 40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_FUTIMENS@ 40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (futimens); 40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef futimens 40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FUTIMENS 41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (futimens, "futimens is not portable - " 41105436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module futimens for portability"); 41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_LCHMOD@ 41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME 41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang denotes a symbolic link. */ 41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_LCHMOD@ 42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The lchmod replacement follows symbolic links. Callers should take 42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang this into account; lchmod should be applied only to arguments that 42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang are known to not be symbolic links. On hosts that lack lchmod, 42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang this can lead to race conditions between the check and the 42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang invocation of lchmod, but we know of no workarounds that are 42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang reliable in general. You might try requesting support for lchmod 42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang from your operating system supplier. */ 42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define lchmod chmod 42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on mingw, the second parameter of chmod is 43105436638acc7c010349a69c3395f1a57c642dc62Ying Wang int mode. */ 43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL_CAST_1 (lchmod, chmod, int, 43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang (const char *filename, mode_t mode)); 43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 43505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 /* assume already declared */ 43605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode) 43705436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((1))); 43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode)); 44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_LCHMOD@ 44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (lchmod); 44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef lchmod 44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_LCHMOD 44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (lchmod, "lchmod is unportable - " 44805436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module lchmod for portability"); 44905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 45305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_LSTAT@ 45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ! @HAVE_LSTAT@ 45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* mingw does not support symlinks, therefore it does not have lstat. But 45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang without links, stat does just fine. */ 45705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 45805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define lstat stat 45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 46005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL_1 (lstat, stat, int, (const char *name, struct stat *buf)); 46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif @REPLACE_LSTAT@ 46205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef lstat 46405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define lstat rpl_lstat 46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (lstat, int, (const char *name, struct stat *buf) 46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((1, 2))); 46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (lstat, int, (const char *name, struct stat *buf)); 46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (lstat, int, (const char *name, struct stat *buf)); 47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 47205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_LSTAT@ 47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (lstat); 47405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef lstat 47705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_LSTAT 47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (lstat, "lstat is unportable - " 47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module lstat for portability"); 48005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 48305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @REPLACE_MKDIR@ 48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mkdir 48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define mkdir rpl_mkdir 48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (mkdir, int, (char const *name, mode_t mode) 49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((1))); 49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); 49205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else 49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. 49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang Additionally, it declares _mkdir (and depending on compile flags, an 49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang alias mkdir), only in the nonstandard includes <direct.h> and <io.h>, 49605436638acc7c010349a69c3395f1a57c642dc62Ying Wang which are included above. */ 49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ 49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_rpl_mkdir 50005436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int 50105436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_mkdir (char const *name, mode_t mode) 50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{ 50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang return _mkdir (name); 50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang} 50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define GNULIB_defined_rpl_mkdir 1 50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 50705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define mkdir rpl_mkdir 51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); 51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 51305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode)); 51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (mkdir); 51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 51805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_MKDIRAT@ 52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_MKDIRAT@ 52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (mkdirat, int, (int fd, char const *file, mode_t mode) 52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (mkdirat, int, (int fd, char const *file, mode_t mode)); 52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (mkdirat); 52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mkdirat 52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_MKDIRAT 52905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (mkdirat, "mkdirat is not portable - " 53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module openat for portability"); 53105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 53305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_MKFIFO@ 53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_MKFIFO@ 53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 53805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mkfifo 53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define mkfifo rpl_mkfifo 54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (mkfifo, int, (char const *file, mode_t mode) 54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((1))); 54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (mkfifo, int, (char const *file, mode_t mode)); 54405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_MKFIFO@ 54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (mkfifo, int, (char const *file, mode_t mode) 54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((1))); 54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 54905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (mkfifo, int, (char const *file, mode_t mode)); 55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 55105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (mkfifo); 55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mkfifo 55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_MKFIFO 55505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (mkfifo, "mkfifo is not portable - " 55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module mkfifo for portability"); 55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_MKFIFOAT@ 56205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_MKFIFOAT@ 56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode) 56405436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)); 56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (mkfifoat); 56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mkfifoat 57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_MKFIFOAT 57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (mkfifoat, "mkfifoat is not portable - " 57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module mkfifoat for portability"); 57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 57605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_MKNOD@ 57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_MKNOD@ 57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mknod 58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define mknod rpl_mknod 58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev) 58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((1))); 58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev)); 58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 58705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_MKNOD@ 58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (mknod, int, (char const *file, mode_t mode, dev_t dev) 58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((1))); 59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on OSF/1 5.1, the third parameter is '...'. */ 59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (mknod, int, (char const *file, mode_t mode, dev_t dev)); 59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (mknod); 59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mknod 59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_MKNOD 59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (mknod, "mknod is not portable - " 59905436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module mknod for portability"); 60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 60205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 60405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_MKNODAT@ 60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_MKNODAT@ 60605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (mknodat, int, 60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (int fd, char const *file, mode_t mode, dev_t dev) 60805436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 61005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (mknodat, int, 61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang (int fd, char const *file, mode_t mode, dev_t dev)); 61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (mknodat); 61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 61405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mknodat 61505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_MKNODAT 61605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (mknodat, "mknodat is not portable - " 61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module mkfifoat for portability"); 61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 62005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_STAT@ 62305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_STAT@ 62405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* We can't use the object-like #define stat rpl_stat, because of 62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang struct stat. This means that rpl_stat will not be used if the user 62605436638acc7c010349a69c3395f1a57c642dc62Ying Wang does (stat)(a,b). Oh well. */ 62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined _AIX && defined stat && defined _LARGE_FILES 62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* With _LARGE_FILES defined, AIX (only) defines stat to stat64, 62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang so we have to replace stat64() instead of stat(). */ 63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef stat64 63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define stat64(name, st) rpl_stat (name, st) 63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif @WINDOWS_64_BIT_ST_SIZE@ 63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Above, we define stat to _stati64. */ 63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined __MINGW32__ && defined _stati64 63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef _USE_32BIT_TIME_T 63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The system headers define _stati64 to _stat64. */ 63705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _stat64 63805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _stat64(name, st) rpl_stat (name, st) 63905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif defined _MSC_VER && defined _stati64 64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef _USE_32BIT_TIME_T 64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The system headers define _stati64 to _stat32i64. */ 64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _stat32i64 64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _stat32i64(name, st) rpl_stat (name, st) 64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 64605436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The system headers define _stati64 to _stat64. */ 64705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _stat64 64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _stat64(name, st) rpl_stat (name, st) 64905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 65005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _stati64 65205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _stati64(name, st) rpl_stat (name, st) 65305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 65405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif defined __MINGW32__ && defined stat 65505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef _USE_32BIT_TIME_T 65605436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The system headers define stat to _stat32i64. */ 65705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _stat32i64 65805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _stat32i64(name, st) rpl_stat (name, st) 65905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The system headers define stat to _stat64. */ 66105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _stat64 66205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _stat64(name, st) rpl_stat (name, st) 66305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 66405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif defined _MSC_VER && defined stat 66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef _USE_32BIT_TIME_T 66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The system headers define stat to _stat32. */ 66705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _stat32 66805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _stat32(name, st) rpl_stat (name, st) 66905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The system headers define stat to _stat64i32. */ 67105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _stat64i32 67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _stat64i32(name, st) rpl_stat (name, st) 67305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 67405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else /* !(_AIX ||__MINGW32__ || _MSC_VER) */ 67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef stat 67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define stat(name, st) rpl_stat (name, st) 67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif /* !_LARGE_FILES */ 67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_EXTERN_C int stat (const char *name, struct stat *buf) 67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((1, 2)); 68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef stat 68305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_STAT 68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (stat, "stat is unportable - " 68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module stat for portability"); 68605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 68705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 68805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 68905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 69005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_UTIMENSAT@ 69105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our utimensat 69205436638acc7c010349a69c3395f1a57c642dc62Ying Wang implementation relies on futimesat, which on Solaris 10 makes an invocation 69305436638acc7c010349a69c3395f1a57c642dc62Ying Wang to utimensat that is meant to invoke the libc's utimensat(), not gnulib's 69405436638acc7c010349a69c3395f1a57c642dc62Ying Wang utimensat(). */ 69505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_UTIMENSAT@ || (!@HAVE_UTIMENSAT@ && defined __sun) 69605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 69705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef utimensat 69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define utimensat rpl_utimensat 69905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 70005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (utimensat, int, (int fd, char const *name, 70105436638acc7c010349a69c3395f1a57c642dc62Ying Wang struct timespec const times[2], int flag) 70205436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 70305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (utimensat, int, (int fd, char const *name, 70405436638acc7c010349a69c3395f1a57c642dc62Ying Wang struct timespec const times[2], int flag)); 70505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 70605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_UTIMENSAT@ 70705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name, 70805436638acc7c010349a69c3395f1a57c642dc62Ying Wang struct timespec const times[2], int flag) 70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 71005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name, 71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang struct timespec const times[2], int flag)); 71305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 71405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_UTIMENSAT@ 71505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (utimensat); 71605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 71705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef utimensat 71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_UTIMENSAT 72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (utimensat, "utimensat is not portable - " 72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module utimensat for portability"); 72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 72405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 72505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _@GUARD_PREFIX@_SYS_STAT_H */ 72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _@GUARD_PREFIX@_SYS_STAT_H */ 72805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 729