1 /* Test of <sys/stat.h> substitute.
2 Copyright (C) 2007-2011 Free Software Foundation, Inc.
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 3 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
17 /* Written by Bruno Haible <bruno@clisp.org>, 2007. */
25 /* Check the existence of some macros. */
29 S_IFBLK
, S_IFCHR
, S_IFDIR
, S_IFIFO
, S_IFREG
,
30 #ifdef S_IFLNK /* missing on mingw and djgpp */
33 #ifdef S_IFSOCK /* missing on mingw and djgpp */
36 S_IRWXU
, S_IRUSR
, S_IWUSR
, S_IXUSR
,
37 S_IRWXG
, S_IRGRP
, S_IWGRP
, S_IXGRP
,
38 S_IRWXO
, S_IROTH
, S_IWOTH
, S_IXOTH
,
39 S_ISUID
, S_ISGID
, S_ISVTX
,
60 verify (S_IRWXU
== (S_IRUSR
| S_IWUSR
| S_IXUSR
));
61 verify (S_IRWXG
== (S_IRGRP
| S_IWGRP
| S_IXGRP
));
62 verify (S_IRWXO
== (S_IROTH
| S_IWOTH
| S_IXOTH
));
64 verify (S_ISBLK (S_IFBLK
));
65 verify (!S_ISBLK (S_IFCHR
));
66 verify (!S_ISBLK (S_IFDIR
));
67 verify (!S_ISBLK (S_IFIFO
));
68 verify (!S_ISBLK (S_IFREG
));
70 verify (!S_ISBLK (S_IFLNK
));
73 verify (!S_ISBLK (S_IFSOCK
));
76 verify (!S_ISCHR (S_IFBLK
));
77 verify (S_ISCHR (S_IFCHR
));
78 verify (!S_ISCHR (S_IFDIR
));
79 verify (!S_ISCHR (S_IFIFO
));
80 verify (!S_ISCHR (S_IFREG
));
82 verify (!S_ISCHR (S_IFLNK
));
85 verify (!S_ISCHR (S_IFSOCK
));
88 verify (!S_ISDIR (S_IFBLK
));
89 verify (!S_ISDIR (S_IFCHR
));
90 verify (S_ISDIR (S_IFDIR
));
91 verify (!S_ISDIR (S_IFIFO
));
92 verify (!S_ISDIR (S_IFREG
));
94 verify (!S_ISDIR (S_IFLNK
));
97 verify (!S_ISDIR (S_IFSOCK
));
100 verify (!S_ISFIFO (S_IFBLK
));
101 verify (!S_ISFIFO (S_IFCHR
));
102 verify (!S_ISFIFO (S_IFDIR
));
103 verify (S_ISFIFO (S_IFIFO
));
104 verify (!S_ISFIFO (S_IFREG
));
106 verify (!S_ISFIFO (S_IFLNK
));
109 verify (!S_ISFIFO (S_IFSOCK
));
112 verify (!S_ISREG (S_IFBLK
));
113 verify (!S_ISREG (S_IFCHR
));
114 verify (!S_ISREG (S_IFDIR
));
115 verify (!S_ISREG (S_IFIFO
));
116 verify (S_ISREG (S_IFREG
));
118 verify (!S_ISREG (S_IFLNK
));
121 verify (!S_ISREG (S_IFSOCK
));
124 verify (!S_ISLNK (S_IFBLK
));
125 verify (!S_ISLNK (S_IFCHR
));
126 verify (!S_ISLNK (S_IFDIR
));
127 verify (!S_ISLNK (S_IFIFO
));
128 verify (!S_ISLNK (S_IFREG
));
130 verify (S_ISLNK (S_IFLNK
));
133 verify (!S_ISLNK (S_IFSOCK
));
136 verify (!S_ISSOCK (S_IFBLK
));
137 verify (!S_ISSOCK (S_IFCHR
));
138 verify (!S_ISSOCK (S_IFDIR
));
139 verify (!S_ISSOCK (S_IFIFO
));
140 verify (!S_ISSOCK (S_IFREG
));
142 verify (!S_ISSOCK (S_IFLNK
));
145 verify (S_ISSOCK (S_IFSOCK
));
148 verify (!S_ISDOOR (S_IFBLK
));
149 verify (!S_ISDOOR (S_IFCHR
));
150 verify (!S_ISDOOR (S_IFDIR
));
151 verify (!S_ISDOOR (S_IFIFO
));
152 verify (!S_ISDOOR (S_IFREG
));
154 verify (!S_ISDOOR (S_IFLNK
));
157 verify (!S_ISDOOR (S_IFSOCK
));
160 verify (!S_ISMPB (S_IFBLK
));
161 verify (!S_ISMPB (S_IFCHR
));
162 verify (!S_ISMPB (S_IFDIR
));
163 verify (!S_ISMPB (S_IFIFO
));
164 verify (!S_ISMPB (S_IFREG
));
166 verify (!S_ISMPB (S_IFLNK
));
169 verify (!S_ISMPB (S_IFSOCK
));
172 verify (!S_ISNAM (S_IFBLK
));
173 verify (!S_ISNAM (S_IFCHR
));
174 verify (!S_ISNAM (S_IFDIR
));
175 verify (!S_ISNAM (S_IFIFO
));
176 verify (!S_ISNAM (S_IFREG
));
178 verify (!S_ISNAM (S_IFLNK
));
181 verify (!S_ISNAM (S_IFSOCK
));
184 verify (!S_ISNWK (S_IFBLK
));
185 verify (!S_ISNWK (S_IFCHR
));
186 verify (!S_ISNWK (S_IFDIR
));
187 verify (!S_ISNWK (S_IFIFO
));
188 verify (!S_ISNWK (S_IFREG
));
190 verify (!S_ISNWK (S_IFLNK
));
193 verify (!S_ISNWK (S_IFSOCK
));
196 verify (!S_ISPORT (S_IFBLK
));
197 verify (!S_ISPORT (S_IFCHR
));
198 verify (!S_ISPORT (S_IFDIR
));
199 verify (!S_ISPORT (S_IFIFO
));
200 verify (!S_ISPORT (S_IFREG
));
202 verify (!S_ISPORT (S_IFLNK
));
205 verify (!S_ISPORT (S_IFSOCK
));
208 verify (!S_ISCTG (S_IFBLK
));
209 verify (!S_ISCTG (S_IFCHR
));
210 verify (!S_ISCTG (S_IFDIR
));
211 verify (!S_ISCTG (S_IFIFO
));
212 verify (!S_ISCTG (S_IFREG
));
214 verify (!S_ISCTG (S_IFLNK
));
217 verify (!S_ISCTG (S_IFSOCK
));
220 verify (!S_ISOFD (S_IFBLK
));
221 verify (!S_ISOFD (S_IFCHR
));
222 verify (!S_ISOFD (S_IFDIR
));
223 verify (!S_ISOFD (S_IFIFO
));
224 verify (!S_ISOFD (S_IFREG
));
226 verify (!S_ISOFD (S_IFLNK
));
229 verify (!S_ISOFD (S_IFSOCK
));
232 verify (!S_ISOFL (S_IFBLK
));
233 verify (!S_ISOFL (S_IFCHR
));
234 verify (!S_ISOFL (S_IFDIR
));
235 verify (!S_ISOFL (S_IFIFO
));
236 verify (!S_ISOFL (S_IFREG
));
238 verify (!S_ISOFL (S_IFLNK
));
241 verify (!S_ISOFL (S_IFSOCK
));
244 verify (!S_ISWHT (S_IFBLK
));
245 verify (!S_ISWHT (S_IFCHR
));
246 verify (!S_ISWHT (S_IFDIR
));
247 verify (!S_ISWHT (S_IFIFO
));
248 verify (!S_ISWHT (S_IFREG
));
250 verify (!S_ISWHT (S_IFLNK
));
253 verify (!S_ISWHT (S_IFSOCK
));
256 /* POSIX 2008 requires traditional encoding of permission constants. */
257 verify (S_IRWXU
== 00700);
258 verify (S_IRUSR
== 00400);
259 verify (S_IWUSR
== 00200);
260 verify (S_IXUSR
== 00100);
261 verify (S_IRWXG
== 00070);
262 verify (S_IRGRP
== 00040);
263 verify (S_IWGRP
== 00020);
264 verify (S_IXGRP
== 00010);
265 verify (S_IRWXO
== 00007);
266 verify (S_IROTH
== 00004);
267 verify (S_IWOTH
== 00002);
268 verify (S_IXOTH
== 00001);
269 verify (S_ISUID
== 04000);
270 verify (S_ISGID
== 02000);
271 verify (S_ISVTX
== 01000);
273 #if ((0 <= UTIME_NOW && UTIME_NOW < 1000000000) \
274 || (0 <= UTIME_OMIT && UTIME_OMIT < 1000000000) \
275 || UTIME_NOW == UTIME_OMIT)
279 /* Check the existence of some types. */