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