1170754Sdelphij/* Return a string describing the type of a file.
2170754Sdelphij
3170754Sdelphij   Copyright (C) 1993, 1994, 2001, 2002, 2004 Free Software Foundation, Inc.
4170754Sdelphij
5170754Sdelphij   This program is free software; you can redistribute it and/or modify
6170754Sdelphij   it under the terms of the GNU General Public License as published by
7170754Sdelphij   the Free Software Foundation; either version 2, or (at your option)
8170754Sdelphij   any later version.
9170754Sdelphij
10170754Sdelphij   This program is distributed in the hope that it will be useful,
11170754Sdelphij   but WITHOUT ANY WARRANTY; without even the implied warranty of
12170754Sdelphij   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13170754Sdelphij   GNU General Public License for more details.
14170754Sdelphij
15170754Sdelphij   You should have received a copy of the GNU General Public License
16170754Sdelphij   along with this program; if not, write to the Free Software Foundation,
17170754Sdelphij   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
18170754Sdelphij
19170754Sdelphij/* Written by Paul Eggert and Jim Meyering.  */
20170754Sdelphij
21170754Sdelphij#ifndef FILE_TYPE_H
22170754Sdelphij# define FILE_TYPE_H 1
23170754Sdelphij
24170754Sdelphij# if ! defined S_ISREG && ! defined S_IFREG
25170754Sdelphijyou must include <sys/stat.h> before including this file
26170754Sdelphij# endif
27170754Sdelphij
28170754Sdelphijchar const *file_type (struct stat const *);
29170754Sdelphij
30170754Sdelphij# ifndef S_IFMT
31170754Sdelphij#  define S_IFMT 0170000
32170754Sdelphij# endif
33170754Sdelphij
34170754Sdelphij# if STAT_MACROS_BROKEN
35170754Sdelphij#  undef S_ISBLK
36170754Sdelphij#  undef S_ISCHR
37170754Sdelphij#  undef S_ISDIR
38170754Sdelphij#  undef S_ISDOOR
39170754Sdelphij#  undef S_ISFIFO
40170754Sdelphij#  undef S_ISLNK
41170754Sdelphij#  undef S_ISNAM
42170754Sdelphij#  undef S_ISMPB
43170754Sdelphij#  undef S_ISMPC
44170754Sdelphij#  undef S_ISNWK
45170754Sdelphij#  undef S_ISREG
46170754Sdelphij#  undef S_ISSOCK
47170754Sdelphij# endif
48170754Sdelphij
49170754Sdelphij
50170754Sdelphij# ifndef S_ISBLK
51170754Sdelphij#  ifdef S_IFBLK
52170754Sdelphij#   define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
53170754Sdelphij#  else
54170754Sdelphij#   define S_ISBLK(m) 0
55170754Sdelphij#  endif
56170754Sdelphij# endif
57170754Sdelphij
58170754Sdelphij# ifndef S_ISCHR
59170754Sdelphij#  ifdef S_IFCHR
60170754Sdelphij#   define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
61170754Sdelphij#  else
62170754Sdelphij#   define S_ISCHR(m) 0
63170754Sdelphij#  endif
64170754Sdelphij# endif
65170754Sdelphij
66170754Sdelphij# ifndef S_ISDIR
67170754Sdelphij#  ifdef S_IFDIR
68170754Sdelphij#   define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
69170754Sdelphij#  else
70170754Sdelphij#   define S_ISDIR(m) 0
71170754Sdelphij#  endif
72170754Sdelphij# endif
73170754Sdelphij
74170754Sdelphij# ifndef S_ISDOOR /* Solaris 2.5 and up */
75170754Sdelphij#  ifdef S_IFDOOR
76170754Sdelphij#   define S_ISDOOR(m) (((m) & S_IFMT) == S_IFDOOR)
77170754Sdelphij#  else
78170754Sdelphij#   define S_ISDOOR(m) 0
79170754Sdelphij#  endif
80170754Sdelphij# endif
81170754Sdelphij
82170754Sdelphij# ifndef S_ISFIFO
83170754Sdelphij#  ifdef S_IFIFO
84170754Sdelphij#   define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
85170754Sdelphij#  else
86170754Sdelphij#   define S_ISFIFO(m) 0
87170754Sdelphij#  endif
88170754Sdelphij# endif
89170754Sdelphij
90170754Sdelphij# ifndef S_ISLNK
91170754Sdelphij#  ifdef S_IFLNK
92170754Sdelphij#   define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
93170754Sdelphij#  else
94170754Sdelphij#   define S_ISLNK(m) 0
95170754Sdelphij#  endif
96170754Sdelphij# endif
97170754Sdelphij
98170754Sdelphij# ifndef S_ISMPB /* V7 */
99170754Sdelphij#  ifdef S_IFMPB
100170754Sdelphij#   define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
101170754Sdelphij#   define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
102170754Sdelphij#  else
103170754Sdelphij#   define S_ISMPB(m) 0
104170754Sdelphij#   define S_ISMPC(m) 0
105170754Sdelphij#  endif
106170754Sdelphij# endif
107170754Sdelphij
108170754Sdelphij# ifndef S_ISNAM /* Xenix */
109170754Sdelphij#  ifdef S_IFNAM
110170754Sdelphij#   define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM)
111170754Sdelphij#  else
112170754Sdelphij#   define S_ISNAM(m) 0
113170754Sdelphij#  endif
114170754Sdelphij# endif
115170754Sdelphij
116170754Sdelphij# ifndef S_ISNWK /* HP/UX */
117170754Sdelphij#  ifdef S_IFNWK
118170754Sdelphij#   define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
119170754Sdelphij#  else
120170754Sdelphij#   define S_ISNWK(m) 0
121170754Sdelphij#  endif
122170754Sdelphij# endif
123170754Sdelphij
124170754Sdelphij# ifndef S_ISREG
125170754Sdelphij#  ifdef S_IFREG
126170754Sdelphij#   define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
127170754Sdelphij#  else
128170754Sdelphij#   define S_ISREG(m) 0
129170754Sdelphij#  endif
130170754Sdelphij# endif
131170754Sdelphij
132170754Sdelphij# ifndef S_ISSOCK
133170754Sdelphij#  ifdef S_IFSOCK
134170754Sdelphij#   define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
135170754Sdelphij#  else
136170754Sdelphij#   define S_ISSOCK(m) 0
137170754Sdelphij#  endif
138170754Sdelphij# endif
139170754Sdelphij
140170754Sdelphij
141170754Sdelphij# ifndef S_TYPEISMQ
142170754Sdelphij#  define S_TYPEISMQ(p) 0
143170754Sdelphij# endif
144170754Sdelphij
145170754Sdelphij# ifndef S_TYPEISTMO
146170754Sdelphij#  define S_TYPEISTMO(p) 0
147170754Sdelphij# endif
148170754Sdelphij
149170754Sdelphij
150170754Sdelphij# ifndef S_TYPEISSEM
151170754Sdelphij#  ifdef S_INSEM
152170754Sdelphij#   define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM)
153170754Sdelphij#  else
154170754Sdelphij#   define S_TYPEISSEM(p) 0
155170754Sdelphij#  endif
156170754Sdelphij# endif
157170754Sdelphij
158170754Sdelphij# ifndef S_TYPEISSHM
159170754Sdelphij#  ifdef S_INSHD
160170754Sdelphij#   define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD)
161170754Sdelphij#  else
162170754Sdelphij#   define S_TYPEISSHM(p) 0
163170754Sdelphij#  endif
164170754Sdelphij# endif
165170754Sdelphij
166170754Sdelphij#endif /* FILE_TYPE_H */
167