1a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* -*- buffer-read-only: t -*- vi: set ro: */ 2a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ 3a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Provide a more complete sys/stat header file. 4a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner Copyright (C) 2005-2009 Free Software Foundation, Inc. 5a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 6a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner This program is free software; you can redistribute it and/or modify 7a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner it under the terms of the GNU General Public License as published by 8a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner the Free Software Foundation; either version 3, or (at your option) 9a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner any later version. 10a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 11a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner This program is distributed in the hope that it will be useful, 12a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner but WITHOUT ANY WARRANTY; without even the implied warranty of 13a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner GNU General Public License for more details. 15a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 16a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner You should have received a copy of the GNU General Public License 17a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner along with this program; if not, write to the Free Software Foundation, 18a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ 19a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 20a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Written by Eric Blake, Paul Eggert, and Jim Meyering. */ 21a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 22a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* This file is supposed to be used on platforms where <sys/stat.h> is 23a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner incomplete. It is intended to provide definitions and prototypes 24a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner needed by an application. Start with what the system provides. */ 25a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 26a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if __GNUC__ >= 3 27a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner@PRAGMA_SYSTEM_HEADER@ 28a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 29a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 30a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if defined __need_system_sys_stat_h 31a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Special invocation convention. */ 32a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 33a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ 34a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 35a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#else 36a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Normal invocation convention. */ 37a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 38a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef _GL_SYS_STAT_H 39a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 40a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Get nlink_t. */ 41a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#include <sys/types.h> 42a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 43a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* The include_next requires a split double-inclusion guard. */ 44a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ 45a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 46a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef _GL_SYS_STAT_H 47a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#define _GL_SYS_STAT_H 48a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 49a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* The definition of GL_LINK_WARNING is copied here. */ 50a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 51a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Before doing "#define mkdir rpl_mkdir" below, we need to include all 52a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner headers that may declare mkdir(). */ 53a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ 54a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# include <io.h> 55a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 56a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 57a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_IFMT 58a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IFMT 0170000 59a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 60a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 61a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if STAT_MACROS_BROKEN 62a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef S_ISBLK 63a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef S_ISCHR 64a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef S_ISDIR 65a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef S_ISFIFO 66a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef S_ISLNK 67a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef S_ISNAM 68a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef S_ISMPB 69a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef S_ISMPC 70a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef S_ISNWK 71a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef S_ISREG 72a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef S_ISSOCK 73a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 74a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 75a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISBLK 76a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifdef S_IFBLK 77a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) 78a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else 79a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISBLK(m) 0 80a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 81a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 82a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 83a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISCHR 84a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifdef S_IFCHR 85a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) 86a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else 87a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISCHR(m) 0 88a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 89a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 90a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 91a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISDIR 92a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifdef S_IFDIR 93a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) 94a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else 95a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISDIR(m) 0 96a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 97a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 98a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 99a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISDOOR /* Solaris 2.5 and up */ 100a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISDOOR(m) 0 101a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 102a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 103a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISFIFO 104a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifdef S_IFIFO 105a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) 106a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else 107a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISFIFO(m) 0 108a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 109a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 110a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 111a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISLNK 112a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifdef S_IFLNK 113a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) 114a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else 115a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISLNK(m) 0 116a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 117a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 118a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 119a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISMPB /* V7 */ 120a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifdef S_IFMPB 121a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) 122a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) 123a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else 124a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISMPB(m) 0 125a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISMPC(m) 0 126a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 127a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 128a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 129a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISNAM /* Xenix */ 130a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifdef S_IFNAM 131a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM) 132a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else 133a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISNAM(m) 0 134a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 135a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 136a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 137a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISNWK /* HP/UX */ 138a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifdef S_IFNWK 139a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) 140a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else 141a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISNWK(m) 0 142a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 143a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 144a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 145a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISPORT /* Solaris 10 and up */ 146a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISPORT(m) 0 147a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 148a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 149a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISREG 150a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifdef S_IFREG 151a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) 152a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else 153a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISREG(m) 0 154a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 155a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 156a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 157a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISSOCK 158a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifdef S_IFSOCK 159a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) 160a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else 161a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISSOCK(m) 0 162a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 163a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 164a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 165a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 166a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_TYPEISMQ 167a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_TYPEISMQ(p) 0 168a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 169a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 170a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_TYPEISTMO 171a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_TYPEISTMO(p) 0 172a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 173a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 174a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 175a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_TYPEISSEM 176a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifdef S_INSEM 177a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM) 178a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else 179a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_TYPEISSEM(p) 0 180a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 181a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 182a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 183a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_TYPEISSHM 184a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifdef S_INSHD 185a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD) 186a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else 187a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_TYPEISSHM(p) 0 188a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 189a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 190a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 191a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* high performance ("contiguous data") */ 192a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISCTG 193a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISCTG(p) 0 194a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 195a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 196a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Cray DMF (data migration facility): off line, with data */ 197a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISOFD 198a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISOFD(p) 0 199a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 200a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 201a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Cray DMF (data migration facility): off line, with no data */ 202a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISOFL 203a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISOFL(p) 0 204a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 205a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 206a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* 4.4BSD whiteout */ 207a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISWHT 208a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISWHT(m) 0 209a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 210a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 211a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* If any of the following are undefined, 212a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner define them to their de facto standard values. */ 213a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_ISUID 214a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISUID 04000 215a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 216a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_ISGID 217a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISGID 02000 218a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 219a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 220a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* S_ISVTX is a common extension to POSIX. */ 221a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_ISVTX 222a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_ISVTX 01000 223a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 224a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 225a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IRUSR && S_IREAD 226a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IRUSR S_IREAD 227a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 228a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IRUSR 229a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IRUSR 00400 230a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 231a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IRGRP 232a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IRGRP (S_IRUSR >> 3) 233a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 234a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IROTH 235a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IROTH (S_IRUSR >> 6) 236a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 237a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 238a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IWUSR && S_IWRITE 239a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IWUSR S_IWRITE 240a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 241a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IWUSR 242a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IWUSR 00200 243a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 244a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IWGRP 245a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IWGRP (S_IWUSR >> 3) 246a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 247a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IWOTH 248a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IWOTH (S_IWUSR >> 6) 249a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 250a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 251a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IXUSR && S_IEXEC 252a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IXUSR S_IEXEC 253a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 254a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IXUSR 255a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IXUSR 00100 256a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 257a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IXGRP 258a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IXGRP (S_IXUSR >> 3) 259a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 260a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IXOTH 261a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IXOTH (S_IXUSR >> 6) 262a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 263a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 264a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IRWXU 265a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) 266a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 267a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IRWXG 268a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) 269a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 270a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IRWXO 271a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) 272a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 273a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 274a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* S_IXUGO is a common extension to POSIX. */ 275a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !S_IXUGO 276a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) 277a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 278a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 279a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef S_IRWXUGO 280a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO) 281a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 282a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 283a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 284a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifdef __cplusplus 285a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerextern "C" { 286a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 287a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 288a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 289a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if @GNULIB_LSTAT@ 290a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# if ! @HAVE_LSTAT@ 291a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* mingw does not support symlinks, therefore it does not have lstat. But 292a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner without links, stat does just fine. */ 293a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define lstat stat 294a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# elif @REPLACE_LSTAT@ 295a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef lstat 296a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define lstat rpl_lstat 297a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerextern int rpl_lstat (const char *name, struct stat *buf); 298a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 299a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#elif defined GNULIB_POSIXCHECK 300a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef lstat 301a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define lstat(p,b) \ 302a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner (GL_LINK_WARNING ("lstat is unportable - " \ 303a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner "use gnulib module lstat for portability"), \ 304a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner lstat (p, b)) 305a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 306a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 307a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 308a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if @REPLACE_MKDIR@ 309a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef mkdir 310a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define mkdir rpl_mkdir 311a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerextern int mkdir (char const *name, mode_t mode); 312a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#else 313a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. 314a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner Additionally, it declares _mkdir (and depending on compile flags, an 315a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner alias mkdir), only in the nonstandard <io.h>, which is included above. */ 316a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ 317a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 318a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerstatic inline int 319a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerrpl_mkdir (char const *name, mode_t mode) 320a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner{ 321a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner return _mkdir (name); 322a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner} 323a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 324a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define mkdir rpl_mkdir 325a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 326a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 327a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 328a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 329a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Declare BSD extensions. */ 330a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 331a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if @GNULIB_LCHMOD@ 332a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME 333a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner denotes a symbolic link. */ 334a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# if !@HAVE_LCHMOD@ 335a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* The lchmod replacement follows symbolic links. Callers should take 336a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner this into account; lchmod should be applied only to arguments that 337a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner are known to not be symbolic links. On hosts that lack lchmod, 338a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner this can lead to race conditions between the check and the 339a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner invocation of lchmod, but we know of no workarounds that are 340a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner reliable in general. You might try requesting support for lchmod 341a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner from your operating system supplier. */ 342a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define lchmod chmod 343a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 344a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# if 0 /* assume already declared */ 345a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerextern int lchmod (const char *filename, mode_t mode); 346a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif 347a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#elif defined GNULIB_POSIXCHECK 348a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef lchmod 349a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define lchmod(f,m) \ 350a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner (GL_LINK_WARNING ("lchmod is unportable - " \ 351a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner "use gnulib module lchmod for portability"), \ 352a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner lchmod (f, m)) 353a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 354a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 355a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 356a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifdef __cplusplus 357a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner} 358a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 359a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 360a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 361a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif /* _GL_SYS_STAT_H */ 362a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif /* _GL_SYS_STAT_H */ 363a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 364