xref: /plan9/sys/src/ape/cmd/pdksh/ksh_stat.h (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1*7dd7cddfSDavid du Colombier /* Wrapper around the ugly sys/stat includes/ifdefs */
2*7dd7cddfSDavid du Colombier /* $Id$ */
3*7dd7cddfSDavid du Colombier 
4*7dd7cddfSDavid du Colombier /* assumes <sys/types.h> already included */
5*7dd7cddfSDavid du Colombier #include <sys/stat.h>
6*7dd7cddfSDavid du Colombier 
7*7dd7cddfSDavid du Colombier #ifndef HAVE_LSTAT
8*7dd7cddfSDavid du Colombier # define lstat(path, buf)	stat(path, buf)
9*7dd7cddfSDavid du Colombier #endif /* HAVE_LSTAT */
10*7dd7cddfSDavid du Colombier 
11*7dd7cddfSDavid du Colombier #ifdef STAT_MACROS_BROKEN
12*7dd7cddfSDavid du Colombier # undef S_ISREG
13*7dd7cddfSDavid du Colombier # undef S_ISDIR
14*7dd7cddfSDavid du Colombier # undef S_ISCHR
15*7dd7cddfSDavid du Colombier # undef S_ISBLK
16*7dd7cddfSDavid du Colombier # undef S_ISFIFO
17*7dd7cddfSDavid du Colombier # undef S_ISSOCK
18*7dd7cddfSDavid du Colombier # undef S_ISLNK
19*7dd7cddfSDavid du Colombier #endif /* STAT_MACROS_BROKEN */
20*7dd7cddfSDavid du Colombier 
21*7dd7cddfSDavid du Colombier #if !defined(S_ISREG) && defined(S_IFREG)
22*7dd7cddfSDavid du Colombier # define S_ISREG(m)	(((m) & S_IFMT) == S_IFREG)
23*7dd7cddfSDavid du Colombier #endif /* S_ISREG */
24*7dd7cddfSDavid du Colombier #if !defined(S_ISDIR) && defined(S_IFDIR)
25*7dd7cddfSDavid du Colombier # define S_ISDIR(m)	(((m) & S_IFMT) == S_IFDIR)
26*7dd7cddfSDavid du Colombier #endif /* S_ISDIR */
27*7dd7cddfSDavid du Colombier #if !defined(S_ISCHR) && defined(S_IFCHR)
28*7dd7cddfSDavid du Colombier # define S_ISCHR(m)	(((m) & S_IFMT) == S_IFCHR)
29*7dd7cddfSDavid du Colombier #endif /* S_ISCHR */
30*7dd7cddfSDavid du Colombier #if !defined(S_ISBLK) && defined(S_IFBLK)
31*7dd7cddfSDavid du Colombier # define S_ISBLK(m)	(((m) & S_IFMT) == S_IFBLK)
32*7dd7cddfSDavid du Colombier #endif /* S_ISBLK */
33*7dd7cddfSDavid du Colombier #if !defined(S_ISFIFO) && defined(S_IFIFO)
34*7dd7cddfSDavid du Colombier # define S_ISFIFO(m)	(((m) & S_IFMT) == S_IFIFO)
35*7dd7cddfSDavid du Colombier #endif /* S_ISFIFO */
36*7dd7cddfSDavid du Colombier #if !defined(S_ISLNK) && defined(S_IFLNK)
37*7dd7cddfSDavid du Colombier # define S_ISLNK(m)	(((m) & S_IFMT) == S_IFLNK)
38*7dd7cddfSDavid du Colombier #endif /* S_ISLNK */
39*7dd7cddfSDavid du Colombier #if !defined(S_ISSOCK) && defined(S_IFSOCK)
40*7dd7cddfSDavid du Colombier # define S_ISSOCK(m)	(((m) & S_IFMT) == S_IFSOCK)
41*7dd7cddfSDavid du Colombier #endif /* S_ISSOCK */
42*7dd7cddfSDavid du Colombier #if !defined(S_ISCDF) && defined(S_CDF)
43*7dd7cddfSDavid du Colombier # define S_ISCDF(m)	(S_ISDIR(m) && ((m) & S_CDF))
44*7dd7cddfSDavid du Colombier #endif /* S_ISSOCK */
45*7dd7cddfSDavid du Colombier 
46*7dd7cddfSDavid du Colombier #ifndef S_ISVTX
47*7dd7cddfSDavid du Colombier # define S_ISVTX	01000	/* sticky bit */
48*7dd7cddfSDavid du Colombier #endif /* S_ISVTX */
49*7dd7cddfSDavid du Colombier 
50*7dd7cddfSDavid du Colombier #ifndef S_IXUSR
51*7dd7cddfSDavid du Colombier # define S_IXUSR	00100	/* user execute bit */
52*7dd7cddfSDavid du Colombier #endif /* S_IXUSR */
53*7dd7cddfSDavid du Colombier #ifndef S_IXGRP
54*7dd7cddfSDavid du Colombier # define S_IXGRP	00010	/* user execute bit */
55*7dd7cddfSDavid du Colombier #endif /* S_IXGRP */
56*7dd7cddfSDavid du Colombier #ifndef S_IXOTH
57*7dd7cddfSDavid du Colombier # define S_IXOTH	00001	/* user execute bit */
58*7dd7cddfSDavid du Colombier #endif /* S_IXOTH */
59