00163b8ee382cb6d8c0d1175c6698fb65d42aae6
[gnulib.git] / lib / file-type.h
1 #if HAVE_CONFIG_H
2 # include <config.h>
3 #endif
4
5 #include <sys/types.h>
6 #include <sys/stat.h>
7
8 char const *file_type (struct stat const *);
9
10 #if STAT_MACROS_BROKEN
11 # undef S_ISBLK
12 # undef S_ISCHR
13 # undef S_ISDIR
14 # undef S_ISDOOR
15 # undef S_ISFIFO
16 # undef S_ISLNK
17 # undef S_ISMPB
18 # undef S_ISMPC
19 # undef S_ISNWK
20 # undef S_ISREG
21 # undef S_ISSOCK
22 #endif /* STAT_MACROS_BROKEN.  */
23
24 #ifndef S_IFMT
25 # define S_IFMT 0170000
26 #endif
27 #if !defined(S_ISBLK) && defined(S_IFBLK)
28 # define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
29 #endif
30 #if !defined(S_ISCHR) && defined(S_IFCHR)
31 # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
32 #endif
33 #if !defined(S_ISDIR) && defined(S_IFDIR)
34 # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
35 #endif
36 #if !defined(S_ISREG) && defined(S_IFREG)
37 # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
38 #endif
39 #if !defined(S_ISFIFO) && defined(S_IFIFO)
40 # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
41 #endif
42 #if !defined(S_ISLNK) && defined(S_IFLNK)
43 # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
44 #endif
45 #if !defined(S_ISSOCK) && defined(S_IFSOCK)
46 # define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
47 #endif
48 #if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */
49 # define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
50 # define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
51 #endif
52 #if !defined(S_ISNWK) && defined(S_IFNWK) /* HP/UX */
53 # define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
54 #endif
55 #if !defined(S_ISDOOR) && defined(S_IFDOOR) /* Solaris 2.5 and up */
56 # define S_ISDOOR(m) (((m) & S_IFMT) == S_IFDOOR)
57 #endif
58
59 /* If any of the following S_* macros are undefined, define them here
60    so each use doesn't have to be guarded with e.g., #ifdef S_ISLNK.  */
61 #ifndef S_ISREG
62 # define S_ISREG(Mode) 0
63 #endif
64
65 #ifndef S_ISDIR
66 # define S_ISDIR(Mode) 0
67 #endif
68
69 #ifndef S_ISLNK
70 # define S_ISLNK(Mode) 0
71 #endif
72
73 #ifndef S_ISFIFO
74 # define S_ISFIFO(Mode) 0
75 #endif
76
77 #ifndef S_ISSOCK
78 # define S_ISSOCK(Mode) 0
79 #endif
80
81 #ifndef S_ISCHR
82 # define S_ISCHR(Mode) 0
83 #endif
84
85 #ifndef S_ISBLK
86 # define S_ISBLK(Mode) 0
87 #endif
88
89 #ifndef S_ISDOOR
90 # define S_ISDOOR(Mode) 0
91 #endif
92
93 #ifndef S_TYPEISSEM
94 # define S_TYPEISSEM(Stat_buf_p) 0
95 #endif
96
97 #ifndef S_TYPEISSHM
98 # define S_TYPEISSHM(Stat_buf_p) 0
99 #endif
100
101 #ifndef S_TYPEISTMO
102 # define S_TYPEISTMO(Stat_buf_p) 0
103 #endif