modernc.org/cc@v1.0.1/v2/headers/linux_386/usr/include/fcntl.h (about) 1 /* Copyright (C) 1991-2018 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 The GNU C Library 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 GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with the GNU C Library; if not, see 16 <http://www.gnu.org/licenses/>. */ 17 18 /* 19 * POSIX Standard: 6.5 File Control Operations <fcntl.h> 20 */ 21 22 #ifndef _FCNTL_H 23 #define _FCNTL_H 1 24 25 #include <features.h> 26 27 /* This must be early so <bits/fcntl.h> can define types winningly. */ 28 __BEGIN_DECLS 29 /* Get __mode_t, __dev_t and __off_t .*/ 30 #include <bits/types.h> 31 /* Get the definitions of O_*, F_*, FD_*: all the 32 numbers and flag bits for `open', `fcntl', et al. */ 33 #include <bits/fcntl.h> 34 /* Detect if open needs mode as a third argument (or for openat as a fourth 35 argument). */ 36 #ifdef __O_TMPFILE 37 # define __OPEN_NEEDS_MODE(oflag) \ 38 (((oflag) & O_CREAT) != 0 || ((oflag) & __O_TMPFILE) == __O_TMPFILE) 39 #else 40 # define __OPEN_NEEDS_MODE(oflag) (((oflag) & O_CREAT) != 0) 41 #endif 42 /* POSIX.1-2001 specifies that these types are defined by <fcntl.h>. 43 Earlier POSIX standards permitted any type ending in `_t' to be defined 44 by any POSIX header, so we don't conditionalize the definitions here. */ 45 #ifndef __mode_t_defined 46 typedef __mode_t mode_t; 47 # define __mode_t_defined 48 #endif 49 50 #ifndef __off_t_defined 51 # ifndef __USE_FILE_OFFSET64 52 typedef __off_t off_t; 53 # else 54 typedef __off64_t off_t; 55 # endif 56 # define __off_t_defined 57 #endif 58 59 #if defined __USE_LARGEFILE64 && !defined __off64_t_defined 60 typedef __off64_t off64_t; 61 # define __off64_t_defined 62 #endif 63 64 #ifndef __pid_t_defined 65 typedef __pid_t pid_t; 66 # define __pid_t_defined 67 #endif 68 69 /* For XPG all symbols from <sys/stat.h> should also be available. */ 70 #ifdef __USE_XOPEN2K8 71 # include <bits/types/struct_timespec.h> 72 #endif 73 #if defined __USE_XOPEN || defined __USE_XOPEN2K8 74 # include <bits/stat.h> 75 76 # define S_IFMT __S_IFMT 77 # define S_IFDIR __S_IFDIR 78 # define S_IFCHR __S_IFCHR 79 # define S_IFBLK __S_IFBLK 80 # define S_IFREG __S_IFREG 81 # ifdef __S_IFIFO 82 # define S_IFIFO __S_IFIFO 83 # endif 84 # ifdef __S_IFLNK 85 # define S_IFLNK __S_IFLNK 86 # endif 87 # if (defined __USE_UNIX98 || defined __USE_XOPEN2K8) && defined __S_IFSOCK 88 # define S_IFSOCK __S_IFSOCK 89 # endif 90 91 /* Protection bits. */ 92 93 # define S_ISUID __S_ISUID /* Set user ID on execution. */ 94 # define S_ISGID __S_ISGID /* Set group ID on execution. */ 95 96 # if defined __USE_MISC || defined __USE_XOPEN 97 /* Save swapped text after use (sticky bit). This is pretty well obsolete. */ 98 # define S_ISVTX __S_ISVTX 99 # endif 100 101 # define S_IRUSR __S_IREAD /* Read by owner. */ 102 # define S_IWUSR __S_IWRITE /* Write by owner. */ 103 # define S_IXUSR __S_IEXEC /* Execute by owner. */ 104 /* Read, write, and execute by owner. */ 105 # define S_IRWXU (__S_IREAD|__S_IWRITE|__S_IEXEC) 106 107 # define S_IRGRP (S_IRUSR >> 3) /* Read by group. */ 108 # define S_IWGRP (S_IWUSR >> 3) /* Write by group. */ 109 # define S_IXGRP (S_IXUSR >> 3) /* Execute by group. */ 110 /* Read, write, and execute by group. */ 111 # define S_IRWXG (S_IRWXU >> 3) 112 113 # define S_IROTH (S_IRGRP >> 3) /* Read by others. */ 114 # define S_IWOTH (S_IWGRP >> 3) /* Write by others. */ 115 # define S_IXOTH (S_IXGRP >> 3) /* Execute by others. */ 116 /* Read, write, and execute by others. */ 117 # define S_IRWXO (S_IRWXG >> 3) 118 #endif 119 120 #ifdef __USE_MISC 121 # ifndef R_OK /* Verbatim from <unistd.h>. Ugh. */ 122 /* Values for the second argument to access. 123 These may be OR'd together. */ 124 # define R_OK 4 /* Test for read permission. */ 125 # define W_OK 2 /* Test for write permission. */ 126 # define X_OK 1 /* Test for execute permission. */ 127 # define F_OK 0 /* Test for existence. */ 128 # endif 129 #endif /* Use misc. */ 130 131 /* XPG wants the following symbols. <stdio.h> has the same definitions. */ 132 #if defined __USE_XOPEN || defined __USE_XOPEN2K8 133 # define SEEK_SET 0 /* Seek from beginning of file. */ 134 # define SEEK_CUR 1 /* Seek from current position. */ 135 # define SEEK_END 2 /* Seek from end of file. */ 136 #endif /* XPG */ 137 138 /* Do the file control operation described by CMD on FD. 139 The remaining arguments are interpreted depending on CMD. 140 141 This function is a cancellation point and therefore not marked with 142 __THROW. */ 143 extern int fcntl(int __fd, int __cmd, ...); 144 145 /* Open FILE and return a new file descriptor for it, or -1 on error. 146 OFLAG determines the type of access used. If O_CREAT or O_TMPFILE is set 147 in OFLAG, the third argument is taken as a `mode_t', the mode of the 148 created file. 149 150 This function is a cancellation point and therefore not marked with 151 __THROW. */ 152 #ifndef __USE_FILE_OFFSET64 153 extern int open(const char *__file, int __oflag, ...) __nonnull((1)); 154 #else 155 # ifdef __REDIRECT 156 extern int __REDIRECT(open, (const char *__file, int __oflag, ...), open64) __nonnull((1)); 157 # else 158 # define open open64 159 # endif 160 #endif 161 #ifdef __USE_LARGEFILE64 162 extern int open64(const char *__file, int __oflag, ...) __nonnull((1)); 163 #endif 164 165 #ifdef __USE_ATFILE 166 /* Similar to `open' but a relative path name is interpreted relative to 167 the directory for which FD is a descriptor. 168 169 NOTE: some other `openat' implementation support additional functionality 170 through this interface, especially using the O_XATTR flag. This is not 171 yet supported here. 172 173 This function is a cancellation point and therefore not marked with 174 __THROW. */ 175 # ifndef __USE_FILE_OFFSET64 176 extern int openat(int __fd, const char *__file, int __oflag, ...) __nonnull((2)); 177 # else 178 # ifdef __REDIRECT 179 extern int __REDIRECT(openat, (int __fd, const char *__file, int __oflag, ...), openat64) __nonnull((2)); 180 # else 181 # define openat openat64 182 # endif 183 # endif 184 # ifdef __USE_LARGEFILE64 185 extern int openat64(int __fd, const char *__file, int __oflag, ...) __nonnull((2)); 186 # endif 187 #endif 188 189 /* Create and open FILE, with mode MODE. This takes an `int' MODE 190 argument because that is what `mode_t' will be widened to. 191 192 This function is a cancellation point and therefore not marked with 193 __THROW. */ 194 #ifndef __USE_FILE_OFFSET64 195 extern int creat(const char *__file, mode_t __mode) __nonnull((1)); 196 #else 197 # ifdef __REDIRECT 198 extern int __REDIRECT(creat, (const char *__file, mode_t __mode), creat64) __nonnull((1)); 199 # else 200 # define creat creat64 201 # endif 202 #endif 203 #ifdef __USE_LARGEFILE64 204 extern int creat64(const char *__file, mode_t __mode) __nonnull((1)); 205 #endif 206 207 #if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \ 208 && !defined __USE_POSIX)) 209 /* NOTE: These declarations also appear in <unistd.h>; be sure to keep both 210 files consistent. Some systems have them there and some here, and some 211 software depends on the macros being defined without including both. */ 212 213 /* `lockf' is a simpler interface to the locking facilities of `fcntl'. 214 LEN is always relative to the current file position. 215 The CMD argument is one of the following. */ 216 217 # define F_ULOCK 0 /* Unlock a previously locked region. */ 218 # define F_LOCK 1 /* Lock a region for exclusive use. */ 219 # define F_TLOCK 2 /* Test and lock a region for exclusive use. */ 220 # define F_TEST 3 /* Test a region for other processes locks. */ 221 222 # ifndef __USE_FILE_OFFSET64 223 extern int lockf(int __fd, int __cmd, off_t __len); 224 # else 225 # ifdef __REDIRECT 226 extern int __REDIRECT(lockf, (int __fd, int __cmd, __off64_t __len), lockf64); 227 # else 228 # define lockf lockf64 229 # endif 230 # endif 231 # ifdef __USE_LARGEFILE64 232 extern int lockf64(int __fd, int __cmd, off64_t __len); 233 # endif 234 #endif 235 236 #ifdef __USE_XOPEN2K 237 /* Advice the system about the expected behaviour of the application with 238 respect to the file associated with FD. */ 239 # ifndef __USE_FILE_OFFSET64 240 extern int posix_fadvise(int __fd, off_t __offset, off_t __len, int __advise) __THROW; 241 # else 242 # ifdef __REDIRECT_NTH 243 extern int __REDIRECT_NTH(posix_fadvise, (int __fd, __off64_t __offset, __off64_t __len, int __advise), posix_fadvise64); 244 # else 245 # define posix_fadvise posix_fadvise64 246 # endif 247 # endif 248 # ifdef __USE_LARGEFILE64 249 extern int posix_fadvise64(int __fd, off64_t __offset, off64_t __len, int __advise) __THROW; 250 # endif 251 252 /* Reserve storage for the data of the file associated with FD. 253 254 This function is a possible cancellation point and therefore not 255 marked with __THROW. */ 256 # ifndef __USE_FILE_OFFSET64 257 extern int posix_fallocate(int __fd, off_t __offset, off_t __len); 258 # else 259 # ifdef __REDIRECT 260 extern int __REDIRECT(posix_fallocate, (int __fd, __off64_t __offset, __off64_t __len), posix_fallocate64); 261 # else 262 # define posix_fallocate posix_fallocate64 263 # endif 264 # endif 265 # ifdef __USE_LARGEFILE64 266 extern int posix_fallocate64(int __fd, off64_t __offset, off64_t __len); 267 # endif 268 #endif 269 270 /* Define some inlines helping to catch common problems. */ 271 #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function \ 272 && defined __va_arg_pack_len 273 # include <bits/fcntl2.h> 274 #endif 275 276 __END_DECLS 277 #endif /* fcntl.h */