VirtualBox

source: kBuild/vendor/grep/current/gnulib-tests/test-fcntl-h.c

Last change on this file was 3529, checked in by bird, 3 years ago

Imported grep 3.7 from grep-3.7.tar.gz (sha256: c22b0cf2d4f6bbe599c902387e8058990e1eee99aef333a203829e5fd3dbb342), applying minimal auto-props.

  • Property svn:eol-style set to native
File size: 2.8 KB
Line 
1/* Test of <fcntl.h> substitute.
2 Copyright (C) 2007, 2009-2021 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 <https://www.gnu.org/licenses/>. */
16
17/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
18
19#include <config.h>
20
21#include <fcntl.h>
22
23/* Check that the various O_* macros are defined. */
24int o = (O_DIRECT | O_DIRECTORY | O_DSYNC | O_IGNORE_CTTY | O_NDELAY | O_NOATIME
25 | O_NONBLOCK | O_NOCTTY | O_NOFOLLOW | O_NOLINK | O_NOLINKS | O_NOTRANS
26 | O_RSYNC | O_SYNC | O_TTY_INIT | O_BINARY | O_TEXT);
27
28/* Check that the various SEEK_* macros are defined. */
29int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET };
30
31/* Check that the FD_* macros are defined. */
32int i = FD_CLOEXEC;
33
34/* Check that the types are all defined. */
35pid_t t1;
36off_t t2;
37mode_t t3;
38
39int
40main (void)
41{
42 /* Ensure no overlap in SEEK_*. */
43 switch (0)
44 {
45 case SEEK_CUR:
46 case SEEK_END:
47 case SEEK_SET:
48 ;
49 }
50
51 /* Ensure no dangerous overlap in non-zero gnulib-defined replacements. */
52 switch (O_RDONLY)
53 {
54 /* Access modes */
55 case O_RDONLY:
56 case O_WRONLY:
57 case O_RDWR:
58#if O_EXEC && O_EXEC != O_RDONLY
59 case O_EXEC:
60#endif
61#if O_SEARCH && O_EXEC != O_SEARCH && O_SEARCH != O_RDONLY
62 case O_SEARCH:
63#endif
64 i = ! (~O_ACCMODE & (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH));
65 break;
66
67 /* Everyone should have these */
68 case O_CREAT:
69 case O_EXCL:
70 case O_TRUNC:
71 case O_APPEND:
72 break;
73
74 /* These might be 0 or O_RDONLY, only test non-zero versions. */
75#if O_CLOEXEC
76 case O_CLOEXEC:
77#endif
78#if O_DIRECT
79 case O_DIRECT:
80#endif
81#if O_DIRECTORY
82 case O_DIRECTORY:
83#endif
84#if O_DSYNC
85 case O_DSYNC:
86#endif
87#if O_IGNORE_CTTY
88 case O_IGNORE_CTTY:
89#endif
90#if O_NOATIME
91 case O_NOATIME:
92#endif
93#if O_NONBLOCK
94 case O_NONBLOCK:
95#endif
96#if O_NOCTTY
97 case O_NOCTTY:
98#endif
99#if O_NOFOLLOW
100 case O_NOFOLLOW:
101#endif
102#if O_NOLINK
103 case O_NOLINK:
104#endif
105#if O_NOLINKS
106 case O_NOLINKS:
107#endif
108#if O_NOTRANS
109 case O_NOTRANS:
110#endif
111#if O_RSYNC && O_RSYNC != O_DSYNC
112 case O_RSYNC:
113#endif
114#if O_SYNC && O_SYNC != O_DSYNC && O_SYNC != O_RSYNC
115 case O_SYNC:
116#endif
117#if O_TTY_INIT
118 case O_TTY_INIT:
119#endif
120#if O_BINARY
121 case O_BINARY:
122#endif
123#if O_TEXT
124 case O_TEXT:
125#endif
126 ;
127 }
128
129 return !i;
130}
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette