Imported Upstream version 1.4.16
[platform/upstream/m4.git] / tests / test-sys_stat.c
1 /* Test of <sys/stat.h> substitute.
2    Copyright (C) 2007-2011 Free Software Foundation, Inc.
3
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.
8
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.
13
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/>.  */
16
17 /* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
18
19 #include <config.h>
20
21 #include <sys/stat.h>
22
23 #include "verify.h"
24
25 /* Check the existence of some macros.  */
26 int a[] =
27   {
28     S_IFMT,
29     S_IFBLK, S_IFCHR, S_IFDIR, S_IFIFO, S_IFREG,
30 #ifdef S_IFLNK /* missing on mingw and djgpp */
31     S_IFLNK,
32 #endif
33 #ifdef S_IFSOCK /* missing on mingw and djgpp */
34     S_IFSOCK,
35 #endif
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,
40     S_ISBLK (S_IFREG),
41     S_ISCHR (S_IFREG),
42     S_ISDIR (S_IFREG),
43     S_ISFIFO (S_IFREG),
44     S_ISREG (S_IFREG),
45     S_ISLNK (S_IFREG),
46     S_ISSOCK (S_IFREG),
47     S_ISDOOR (S_IFREG),
48     S_ISMPB (S_IFREG),
49     S_ISNAM (S_IFREG),
50     S_ISNWK (S_IFREG),
51     S_ISPORT (S_IFREG),
52     S_ISCTG (S_IFREG),
53     S_ISOFD (S_IFREG),
54     S_ISOFL (S_IFREG),
55     S_ISWHT (S_IFREG)
56   };
57
58 /* Sanity checks.  */
59
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));
63
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));
69 #ifdef S_IFLNK
70 verify (!S_ISBLK (S_IFLNK));
71 #endif
72 #ifdef S_IFSOCK
73 verify (!S_ISBLK (S_IFSOCK));
74 #endif
75
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));
81 #ifdef S_IFLNK
82 verify (!S_ISCHR (S_IFLNK));
83 #endif
84 #ifdef S_IFSOCK
85 verify (!S_ISCHR (S_IFSOCK));
86 #endif
87
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));
93 #ifdef S_IFLNK
94 verify (!S_ISDIR (S_IFLNK));
95 #endif
96 #ifdef S_IFSOCK
97 verify (!S_ISDIR (S_IFSOCK));
98 #endif
99
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));
105 #ifdef S_IFLNK
106 verify (!S_ISFIFO (S_IFLNK));
107 #endif
108 #ifdef S_IFSOCK
109 verify (!S_ISFIFO (S_IFSOCK));
110 #endif
111
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));
117 #ifdef S_IFLNK
118 verify (!S_ISREG (S_IFLNK));
119 #endif
120 #ifdef S_IFSOCK
121 verify (!S_ISREG (S_IFSOCK));
122 #endif
123
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));
129 #ifdef S_IFLNK
130 verify (S_ISLNK (S_IFLNK));
131 #endif
132 #ifdef S_IFSOCK
133 verify (!S_ISLNK (S_IFSOCK));
134 #endif
135
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));
141 #ifdef S_IFLNK
142 verify (!S_ISSOCK (S_IFLNK));
143 #endif
144 #ifdef S_IFSOCK
145 verify (S_ISSOCK (S_IFSOCK));
146 #endif
147
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));
153 #ifdef S_IFLNK
154 verify (!S_ISDOOR (S_IFLNK));
155 #endif
156 #ifdef S_IFSOCK
157 verify (!S_ISDOOR (S_IFSOCK));
158 #endif
159
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));
165 #ifdef S_IFLNK
166 verify (!S_ISMPB (S_IFLNK));
167 #endif
168 #ifdef S_IFSOCK
169 verify (!S_ISMPB (S_IFSOCK));
170 #endif
171
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));
177 #ifdef S_IFLNK
178 verify (!S_ISNAM (S_IFLNK));
179 #endif
180 #ifdef S_IFSOCK
181 verify (!S_ISNAM (S_IFSOCK));
182 #endif
183
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));
189 #ifdef S_IFLNK
190 verify (!S_ISNWK (S_IFLNK));
191 #endif
192 #ifdef S_IFSOCK
193 verify (!S_ISNWK (S_IFSOCK));
194 #endif
195
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));
201 #ifdef S_IFLNK
202 verify (!S_ISPORT (S_IFLNK));
203 #endif
204 #ifdef S_IFSOCK
205 verify (!S_ISPORT (S_IFSOCK));
206 #endif
207
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));
213 #ifdef S_IFLNK
214 verify (!S_ISCTG (S_IFLNK));
215 #endif
216 #ifdef S_IFSOCK
217 verify (!S_ISCTG (S_IFSOCK));
218 #endif
219
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));
225 #ifdef S_IFLNK
226 verify (!S_ISOFD (S_IFLNK));
227 #endif
228 #ifdef S_IFSOCK
229 verify (!S_ISOFD (S_IFSOCK));
230 #endif
231
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));
237 #ifdef S_IFLNK
238 verify (!S_ISOFL (S_IFLNK));
239 #endif
240 #ifdef S_IFSOCK
241 verify (!S_ISOFL (S_IFSOCK));
242 #endif
243
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));
249 #ifdef S_IFLNK
250 verify (!S_ISWHT (S_IFLNK));
251 #endif
252 #ifdef S_IFSOCK
253 verify (!S_ISWHT (S_IFSOCK));
254 #endif
255
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);
272
273 #if ((0 <= UTIME_NOW && UTIME_NOW < 1000000000)           \
274      || (0 <= UTIME_OMIT && UTIME_OMIT < 1000000000)      \
275      || UTIME_NOW == UTIME_OMIT)
276 invalid UTIME macros
277 #endif
278
279 /* Check the existence of some types.  */
280 nlink_t t1;
281
282 struct timespec t2;
283
284 int
285 main (void)
286 {
287   return 0;
288 }