ReactOS
0.4.16-dev-297-gc569aee
Toggle main menu visibility
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
x
Functions
_
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
w
Variables
_
c
d
e
f
g
h
i
l
n
o
p
s
t
u
x
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
w
x
Enumerations
_
c
d
f
i
l
m
o
p
s
t
w
x
Enumerator
a
b
c
d
e
f
g
h
i
m
n
o
p
r
s
t
u
v
w
x
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
_
a
b
c
d
e
f
h
i
k
l
m
n
o
p
r
s
t
u
v
w
z
Enumerator
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Properties
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Related Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
v
x
Files
File List
File Members
All
$
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
$
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
$
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Examples
stat.h
Go to the documentation of this file.
1
/* @(#)stat.h 1.20 15/08/23 Copyright 1998-2015 J. Schilling */
2
/*
3
* Definitions for stat() file mode
4
*
5
* Copyright (c) 1998-2015 J. Schilling
6
*/
7
/*
8
* The contents of this file are subject to the terms of the
9
* Common Development and Distribution License, Version 1.0 only
10
* (the "License"). You may not use this file except in compliance
11
* with the License.
12
*
13
* See the file CDDL.Schily.txt in this distribution for details.
14
* A copy of the CDDL is also available via the Internet at
15
* http://www.opensource.org/licenses/cddl1.txt
16
*
17
* When distributing Covered Code, include this CDDL HEADER in each
18
* file and include the License file CDDL.Schily.txt from this distribution.
19
*/
20
21
#ifndef _SCHILY_STAT_H
22
#define _SCHILY_STAT_H
23
24
#ifndef _SCHILY_MCONFIG_H
25
#include <
schily/mconfig.h
>
26
#endif
27
28
#ifndef _SCHILY_TYPES_H
29
#include <
schily/types.h
>
/* Needed for sys/stat.h */
30
#endif
31
#ifndef _INCL_SYS_STAT_H
32
#include <
sys/stat.h
>
/* For S_IS* and S_IF* */
33
#define _INCL_SYS_STAT_H
34
#endif
35
36
#if !defined(HAVE_LSTAT) || !defined(S_IFLNK)
37
#define lstat stat
38
#endif
39
40
/*
41
* Apollo Domain/OS has a broken sys/stat.h that defines
42
* S_IFIFO == S_IFSOCK and creates trouble if the constants
43
* are used as case labels.
44
*/
45
#if S_IFIFO == S_IFSOCK
46
# undef S_IFSOCK
47
#endif
48
49
#ifdef STAT_MACROS_BROKEN
50
#undef S_ISFIFO
/* Named pipe */
51
#undef S_ISCHR
/* Character special */
52
#undef S_ISMPC
/* UNUSED multiplexed c */
53
#undef S_ISDIR
/* Directory */
54
#undef S_ISNAM
/* Named file (XENIX) */
55
#undef S_ISBLK
/* Block special */
56
#undef S_ISMPB
/* UNUSED multiplexed b */
57
#undef S_ISREG
/* Regular file */
58
#undef S_ISCTG
/* Contiguous file */
59
#undef S_ISLNK
/* Symbolic link */
60
#undef S_ISSHAD
/* Solaris shadow inode */
61
#undef S_ISSOCK
/* UNIX domain socket */
62
#undef S_ISDOOR
/* Solaris DOOR */
63
#undef S_ISPORT
/* Solaris event port */
64
#undef S_ISWHT
/* BSD whiteout */
65
#undef S_ISEVC
/* UNOS eventcount */
66
#endif
67
68
#ifndef S_ISFIFO
/* 1 Named pipe */
69
# ifdef S_IFIFO
70
# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
71
# else
72
# define S_ISFIFO(m) (0)
73
# endif
74
#endif
75
#ifndef S_ISCHR
/* 2 Character special */
76
# ifdef S_IFCHR
77
# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
78
# else
79
# define S_ISCHR(m) (0)
80
# endif
81
#endif
82
#ifndef S_ISMPC
/* 3 UNUSED multiplexed char */
83
# ifdef S_IFMPC
84
# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
85
# else
86
# define S_ISMPC(m) (0)
87
# endif
88
#endif
89
#ifndef S_ISDIR
/* 4 Directory */
90
# ifdef S_IFDIR
91
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
92
# else
93
# define S_ISDIR(m) (0)
94
# endif
95
#endif
96
#ifndef S_ISNAM
/* 5 Named file (XENIX) */
97
# ifdef S_IFNAM
98
# define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM)
99
# else
100
# define S_ISNAM(m) (0)
101
# endif
102
#endif
103
#ifndef S_ISBLK
/* 6 Block special */
104
# ifdef S_IFBLK
105
# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
106
# else
107
# define S_ISBLK(m) (0)
108
# endif
109
#endif
110
#ifndef S_ISMPB
/* 7 UNUSED multiplexed block */
111
# ifdef S_IFMPB
112
# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
113
# else
114
# define S_ISMPB(m) (0)
115
# endif
116
#endif
117
#ifndef S_ISREG
/* 8 Regular file */
118
# ifdef S_IFREG
119
# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
120
# else
121
# define S_ISREG(m) (0)
122
# endif
123
#endif
124
#ifndef S_ISCTG
/* 9 Contiguous file */
125
# ifdef S_IFCTG
126
# define S_ISCTG(m) (((m) & S_IFMT) == S_IFCTG)
127
# else
128
# define S_ISCTG(m) (0)
129
# endif
130
#endif
131
#ifndef S_ISLNK
/* 10 Symbolic link */
132
# ifdef S_IFLNK
133
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
134
# else
135
# define S_ISLNK(m) (0)
136
# endif
137
#endif
138
#ifndef S_ISSHAD
/* 11 Solaris shadow inode */
139
# ifdef S_IFSHAD
140
# define S_ISSHAD(m) (((m) & S_IFMT) == S_IFSHAD)
141
# else
142
# define S_ISSHAD(m) (0)
143
# endif
144
#endif
145
#ifndef S_ISSOCK
/* 12 UNIX domain socket */
146
# ifdef S_IFSOCK
147
# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
148
# else
149
# define S_ISSOCK(m) (0)
150
# endif
151
#endif
152
#ifndef S_ISDOOR
/* 13 Solaris DOOR */
153
# ifdef S_IFDOOR
154
# define S_ISDOOR(m) (((m) & S_IFMT) == S_IFDOOR)
155
# else
156
# define S_ISDOOR(m) (0)
157
# endif
158
#endif
159
#ifndef S_ISPORT
/* 14 Solaris event port */
160
# ifdef S_IFPORT
161
# define S_ISPORT(m) (((m) & S_IFMT) == S_IFPORT)
162
# else
163
# define S_ISPORT(m) (0)
164
# endif
165
#endif
166
#ifndef S_ISWHT
/* 14 BSD whiteout */
167
# ifdef S_IFWHT
168
# define S_ISWHT(m) (((m) & S_IFMT) == S_ISWHT)
169
# else
170
# define S_ISWHT(m) (0)
171
# endif
172
#endif
173
#ifndef S_IFEVC
/* 15 UNOS eventcount */
174
# ifdef S_IFEVC
175
# define S_ISEVC(m) (((m) & S_IFMT) == S_IFEVC)
176
# else
177
# define S_ISEVC(m) (0)
178
# endif
179
#endif
180
181
#ifndef S_TYPEISMQ
182
/*
183
* XXX ??? where is a definition of a message queue ???
184
*/
185
# define S_TYPEISMQ(_stbuf) (0)
186
#endif
187
#ifndef S_TYPEISSEM
188
# ifdef S_INSEM
189
# define S_TYPEISSEM(_stbuf) (S_ISNAM((_stbuf)->st_mode) && \
190
(_stbuf)->st_rdev == S_INSEM)
191
# else
192
# define S_TYPEISSEM(_stbuf) (0)
193
# endif
194
#endif
195
#ifndef S_TYPEISSHM
196
# ifdef S_INSHD
197
# define S_TYPEISSHM(_stbuf) (S_ISNAM((_stbuf)->st_mode) && \
198
(_stbuf)->st_rdev == S_INSHD)
199
# else
200
# define S_TYPEISSHM(_stbuf) (0)
201
# endif
202
#endif
203
204
/*
205
* Mode permission bits.
206
* UNIX V.7 has only S_ISUID/S_ISGID/S_ISVTX and S_IREAD/S_IWRITE/S_IEXEC
207
*
208
* S_ISUID/S_ISGID/S_ISVTX is available on UNIX V.7 and POSIX
209
*/
210
#ifndef S_ISUID
/* Set-user-ID on execution */
211
#define S_ISUID 0
/* If it is not defined, it is not supported */
212
#endif
213
#ifndef S_ISGID
/* Set-group-ID on execution */
214
#define S_ISGID 0
/* If it is not defined, it is not supported */
215
#endif
216
#ifndef S_ISVTX
/* On directories, restricted deletion flag */
217
#define S_ISVTX 0
/* If it is not defined, it is not supported */
218
#endif
219
220
/*
221
* S_IREAD/S_IWRITE/S_IEXEC is only available on UNIX V.7 but not on POSIX
222
* Emulate these definitions to support compilation of programs like
223
* SCCS and the Bourne Shell and to make the other definitions simpler.
224
*/
225
#ifndef S_IREAD
226
#ifdef S_IRUSR
227
#define S_IREAD S_IRUSR
/* Use POSIX name */
228
#else
229
#define S_IREAD 0400
/* Very old UNIX, use own definition */
230
#endif
231
#endif
232
#ifndef S_IWRITE
233
#ifdef S_IWUSR
234
#define S_IWRITE S_IWUSR
/* Use POSIX name */
235
#else
236
#define S_IWRITE 0200
/* Very old UNIX, use own definition */
237
#endif
238
#endif
239
#ifndef S_IEXEC
240
#ifdef S_IXUSR
241
#define S_IEXEC S_IXUSR
/* Use POSIX name */
242
#else
243
#define S_IEXEC 0100
/* Very old UNIX, use own definition */
244
#endif
245
#endif
246
247
#ifndef S_IRUSR
/* Read permission, owner */
248
#define S_IRUSR S_IREAD
/* Needed on old UNIX systems */
249
#endif
250
#ifndef S_IWUSR
/* Write permission, owner */
251
#define S_IWUSR S_IWRITE
/* Needed on old UNIX systems */
252
#endif
253
#ifndef S_IXUSR
/* Execute/search permission, owner */
254
#define S_IXUSR S_IEXEC
/* Needed on old UNIX systems */
255
#endif
256
#ifndef S_IRGRP
/* Read permission, group */
257
#define S_IRGRP (S_IREAD >> 3)
/* Needed on old UNIX systems */
258
#endif
259
#ifndef S_IWGRP
/* Write permission, group */
260
#define S_IWGRP (S_IWRITE >> 3)
/* Needed on old UNIX systems */
261
#endif
262
#ifndef S_IXGRP
/* Execute/search permission, group */
263
#define S_IXGRP (S_IEXEC >> 3)
/* Needed on old UNIX systems */
264
#endif
265
#ifndef S_IROTH
/* Read permission, others */
266
#define S_IROTH (S_IREAD >> 6)
/* Needed on old UNIX systems */
267
#endif
268
#ifndef S_IWOTH
/* Write permission, others */
269
#define S_IWOTH (S_IWRITE >> 6)
/* Needed on old UNIX systems */
270
#endif
271
#ifndef S_IXOTH
/* Execute/search permission, others */
272
#define S_IXOTH (S_IEXEC >> 6)
/* Needed on old UNIX systems */
273
#endif
274
275
#ifndef S_IRWXU
/* Read, write, execute/search by owner */
276
#define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
277
#endif
278
#ifndef S_IRWXG
/* Read, write, execute/search by group */
279
#define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
280
#endif
281
#ifndef S_IRWXO
/* Read, write, execute/search by others */
282
#define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
283
#endif
284
285
/*
286
* SCO UnixWare has st_atim.st__tim.tv_nsec but the st_atim.tv_nsec tests also
287
* succeeds. If we use st_atim.tv_nsec on UnixWare, we get a warning about
288
* illegal structure usage. For this reason, our code needs to have
289
* #ifdef HAVE_ST__TIM before #ifdef HAVE_ST_NSEC.
290
*/
291
#if defined(HAVE_ST_ATIMENSEC)
292
293
/*
294
* Found e.g. on NetBSD and OpenBSD.
295
*/
296
#define stat_ansecs(s) ((s)->st_atimensec)
297
#define stat_mnsecs(s) ((s)->st_mtimensec)
298
#define stat_cnsecs(s) ((s)->st_ctimensec)
299
300
#define stat_set_ansecs(s, n) ((s)->st_atimensec = n)
301
#define stat_set_mnsecs(s, n) ((s)->st_mtimensec = n)
302
#define stat_set_cnsecs(s, n) ((s)->st_ctimensec = n)
303
304
#define _FOUND_STAT_NSECS_
305
#endif
306
307
#if defined(HAVE_ST_ATIME_N)
308
309
/*
310
* Found e.g. on AIX.
311
*/
312
#define stat_ansecs(s) ((s)->st_atime_n)
313
#define stat_mnsecs(s) ((s)->st_mtime_n)
314
#define stat_cnsecs(s) ((s)->st_ctime_n)
315
316
#define stat_set_ansecs(s, n) ((s)->st_atime_n = n)
317
#define stat_set_mnsecs(s, n) ((s)->st_mtime_n = n)
318
#define stat_set_cnsecs(s, n) ((s)->st_ctime_n = n)
319
320
#define _FOUND_STAT_NSECS_
321
#endif
322
323
#if defined(HAVE_ST__TIM) && !defined(_FOUND_STAT_NSECS_)
324
325
/*
326
* Found e.g. on UnixWare.
327
*/
328
#define stat_ansecs(s) ((s)->st_atim.st__tim.tv_nsec)
329
#define stat_mnsecs(s) ((s)->st_mtim.st__tim.tv_nsec)
330
#define stat_cnsecs(s) ((s)->st_ctim.st__tim.tv_nsec)
331
332
#define stat_set_ansecs(s, n) ((s)->st_atim.st__tim.tv_nsec = n)
333
#define stat_set_mnsecs(s, n) ((s)->st_mtim.st__tim.tv_nsec = n)
334
#define stat_set_cnsecs(s, n) ((s)->st_ctim.st__tim.tv_nsec = n)
335
336
#define _FOUND_STAT_NSECS_
337
#endif
338
339
#if defined(HAVE_ST_NSEC) && !defined(_FOUND_STAT_NSECS_)
340
341
/*
342
* Found e.g. on SunOS-5.x and IRIX.
343
*/
344
#define stat_ansecs(s) ((s)->st_atim.tv_nsec)
345
#define stat_mnsecs(s) ((s)->st_mtim.tv_nsec)
346
#define stat_cnsecs(s) ((s)->st_ctim.tv_nsec)
347
348
#define stat_set_ansecs(s, n) ((s)->st_atim.tv_nsec = n)
349
#define stat_set_mnsecs(s, n) ((s)->st_mtim.tv_nsec = n)
350
#define stat_set_cnsecs(s, n) ((s)->st_ctim.tv_nsec = n)
351
352
#define _FOUND_STAT_NSECS_
353
#endif
354
355
#if defined(HAVE_ST_ATIMESPEC) && !defined(_FOUND_STAT_NSECS_)
356
357
/*
358
* Found e.g. on FreeBSD and Mac OS X.
359
*/
360
#define stat_ansecs(s) ((s)->st_atimespec.tv_nsec)
361
#define stat_mnsecs(s) ((s)->st_mtimespec.tv_nsec)
362
#define stat_cnsecs(s) ((s)->st_ctimespec.tv_nsec)
363
364
#define stat_set_ansecs(s, n) ((s)->st_atimespec.tv_nsec = n)
365
#define stat_set_mnsecs(s, n) ((s)->st_mtimespec.tv_nsec = n)
366
#define stat_set_cnsecs(s, n) ((s)->st_ctimespec.tv_nsec = n)
367
368
#define _FOUND_STAT_NSECS_
369
#endif
370
371
/*
372
* st_spare1 is last as some implementations keep backwards
373
* compatibility although there is one of the nsec implementations.
374
*/
375
#if defined(HAVE_ST_SPARE1) && !defined(_FOUND_STAT_NSECS_)
376
377
/*
378
* Found e.g. on SunOS-4.x and HP-UX.
379
*/
380
#define stat_ansecs(s) ((s)->st_spare1 * 1000)
381
#define stat_mnsecs(s) ((s)->st_spare2 * 1000)
382
#define stat_cnsecs(s) ((s)->st_spare3 * 1000)
383
384
#define stat_set_ansecs(s, n) ((s)->st_spare1 = n / 1000)
385
#define stat_set_mnsecs(s, n) ((s)->st_spare2 = n / 1000)
386
#define stat_set_cnsecs(s, n) ((s)->st_spare3 = n / 1000)
387
388
#define _FOUND_STAT_USECS_
389
#define _FOUND_STAT_NSECS_
390
#endif
391
392
#if !defined(_FOUND_STAT_NSECS_)
393
#define stat_ansecs(s) (0)
394
#define stat_mnsecs(s) (0)
395
#define stat_cnsecs(s) (0)
396
397
#define stat_set_ansecs(s, n) (0)
398
#define stat_set_mnsecs(s, n) (0)
399
#define stat_set_cnsecs(s, n) (0)
400
#endif
401
402
#endif
/* _SCHILY_STAT_H */
stat.h
mconfig.h
types.h
sdk
tools
mkisofs
schilytools
include
schily
stat.h
Generated on Wed Nov 27 2024 06:14:28 for ReactOS by
1.9.6