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