Dr Andrew Scott G7VAV

My photo
 
April 2024
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12


fcntl.h
001: /* Copyright (C) 1991,1992,1994-2001,2003,2004,2005,2006,2007,2009,2010,2011
002:         Free Software Foundation, Inc.
003:    This file is part of the GNU C Library.
004: 
005:    The GNU C Library is free software; you can redistribute it and/or
006:    modify it under the terms of the GNU Lesser General Public
007:    License as published by the Free Software Foundation; either
008:    version 2.1 of the License, or (at your option) any later version.
009: 
010:    The GNU C Library is distributed in the hope that it will be useful,
011:    but WITHOUT ANY WARRANTY; without even the implied warranty of
012:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013:    Lesser General Public License for more details.
014: 
015:    You should have received a copy of the GNU Lesser General Public
016:    License along with the GNU C Library; if not, write to the Free
017:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
018:    02111-1307 USA.  */
019: 
020: /*
021:  *      POSIX Standard: 6.5 File Control Operations     <fcntl.h>
022:  */
023: 
024: #ifndef _FCNTL_H
025: #define _FCNTL_H        1
026: 
027: #include <features.h>
028: 
029: /* This must be early so <bits/fcntl.h> can define types winningly.  */
030: __BEGIN_DECLS
031: 
032: /* Get the definitions of O_*, F_*, FD_*: all the
033:    numbers and flag bits for `open', `fcntl', et al.  */
034: #include <bits/fcntl.h>
035: 
036: /* For XPG all symbols from <sys/stat.h> should also be available.  */
037: #if defined __USE_XOPEN || defined __USE_XOPEN2K8
038: # include <bits/types.h>         /* For __mode_t and __dev_t.  */
039: # define __need_timespec
040: # include <time.h>
041: # include <bits/stat.h>
042: 
043: # define S_IFMT         __S_IFMT
044: # define S_IFDIR        __S_IFDIR
045: # define S_IFCHR        __S_IFCHR
046: # define S_IFBLK        __S_IFBLK
047: # define S_IFREG        __S_IFREG
048: # ifdef __S_IFIFO
049: #  define S_IFIFO       __S_IFIFO
050: # endif
051: # ifdef __S_IFLNK
052: #  define S_IFLNK       __S_IFLNK
053: # endif
054: # if (defined __USE_UNIX98 || defined __USE_XOPEN2K8) && defined __S_IFSOCK
055: #  define S_IFSOCK      __S_IFSOCK
056: # endif
057: 
058: /* Protection bits.  */
059: 
060: # define S_ISUID        __S_ISUID       /* Set user ID on execution.  */
061: # define S_ISGID        __S_ISGID       /* Set group ID on execution.  */
062: 
063: # if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN
064: /* Save swapped text after use (sticky bit).  This is pretty well obsolete.  */
065: #  define S_ISVTX       __S_ISVTX
066: # endif
067: 
068: # define S_IRUSR        __S_IREAD       /* Read by owner.  */
069: # define S_IWUSR        __S_IWRITE      /* Write by owner.  */
070: # define S_IXUSR        __S_IEXEC       /* Execute by owner.  */
071: /* Read, write, and execute by owner.  */
072: # define S_IRWXU        (__S_IREAD|__S_IWRITE|__S_IEXEC)
073: 
074: # define S_IRGRP        (S_IRUSR >> 3)  /* Read by group.  */
075: # define S_IWGRP        (S_IWUSR >> 3)  /* Write by group.  */
076: # define S_IXGRP        (S_IXUSR >> 3)  /* Execute by group.  */
077: /* Read, write, and execute by group.  */
078: # define S_IRWXG        (S_IRWXU >> 3)
079: 
080: # define S_IROTH        (S_IRGRP >> 3)  /* Read by others.  */
081: # define S_IWOTH        (S_IWGRP >> 3)  /* Write by others.  */
082: # define S_IXOTH        (S_IXGRP >> 3)  /* Execute by others.  */
083: /* Read, write, and execute by others.  */
084: # define S_IRWXO        (S_IRWXG >> 3)
085: #endif
086: 
087: #ifdef  __USE_MISC
088: # ifndef R_OK                   /* Verbatim from <unistd.h>.  Ugh.  */
089: /* Values for the second argument to access.
090:    These may be OR'd together.  */
091: #  define R_OK  4               /* Test for read permission.  */
092: #  define W_OK  2               /* Test for write permission.  */
093: #  define X_OK  1               /* Test for execute permission.  */
094: #  define F_OK  0               /* Test for existence.  */
095: # endif
096: #endif /* Use misc.  */
097: 
098: /* XPG wants the following symbols.   <stdio.h> has the same definitions.  */
099: #if defined __USE_XOPEN || defined __USE_XOPEN2K8
100: # define SEEK_SET       0       /* Seek from beginning of file.  */
101: # define SEEK_CUR       1       /* Seek from current position.  */
102: # define SEEK_END       2       /* Seek from end of file.  */
103: #endif  /* XPG */
104: 
105: /* Do the file control operation described by CMD on FD.
106:    The remaining arguments are interpreted depending on CMD.
107: 
108:    This function is a cancellation point and therefore not marked with
109:    __THROW.  */
110: extern int fcntl (int __fd, int __cmd, ...);
111: 
112: /* Open FILE and return a new file descriptor for it, or -1 on error.
113:    OFLAG determines the type of access used.  If O_CREAT is on OFLAG,
114:    the third argument is taken as a `mode_t', the mode of the created file.
115: 
116:    This function is a cancellation point and therefore not marked with
117:    __THROW.  */
118: #ifndef __USE_FILE_OFFSET64
119: extern int open (__const char *__file, int __oflag, ...) __nonnull ((1));
120: #else
121: # ifdef __REDIRECT
122: extern int __REDIRECT (open, (__const char *__file, int __oflag, ...), open64)
123:      __nonnull ((1));
124: # else
125: #  define open open64
126: # endif
127: #endif
128: #ifdef __USE_LARGEFILE64
129: extern int open64 (__const char *__file, int __oflag, ...) __nonnull ((1));
130: #endif
131: 
132: #ifdef __USE_ATFILE
133: /* Similar to `open' but a relative path name is interpreted relative to
134:    the directory for which FD is a descriptor.
135: 
136:    NOTE: some other `openat' implementation support additional functionality
137:    through this interface, especially using the O_XATTR flag.  This is not
138:    yet supported here.
139: 
140:    This function is a cancellation point and therefore not marked with
141:    __THROW.  */
142: # ifndef __USE_FILE_OFFSET64
143: extern int openat (int __fd, __const char *__file, int __oflag, ...)
144:      __nonnull ((2));
145: # else
146: #  ifdef __REDIRECT
147: extern int __REDIRECT (openat, (int __fd, __const char *__file, int __oflag,
148:                                 ...), openat64) __nonnull ((2));
149: #  else
150: #   define openat openat64
151: #  endif
152: # endif
153: # ifdef __USE_LARGEFILE64
154: extern int openat64 (int __fd, __const char *__file, int __oflag, ...)
155:      __nonnull ((2));
156: # endif
157: #endif
158: 
159: /* Create and open FILE, with mode MODE.  This takes an `int' MODE
160:    argument because that is what `mode_t' will be widened to.
161: 
162:    This function is a cancellation point and therefore not marked with
163:    __THROW.  */
164: #ifndef __USE_FILE_OFFSET64
165: extern int creat (__const char *__file, __mode_t __mode) __nonnull ((1));
166: #else
167: # ifdef __REDIRECT
168: extern int __REDIRECT (creat, (__const char *__file, __mode_t __mode),
169:                        creat64) __nonnull ((1));
170: # else
171: #  define creat creat64
172: # endif
173: #endif
174: #ifdef __USE_LARGEFILE64
175: extern int creat64 (__const char *__file, __mode_t __mode) __nonnull ((1));
176: #endif
177: 
178: #if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \
179:                                                && !defined __USE_POSIX))
180: /* NOTE: These declarations also appear in <unistd.h>; be sure to keep both
181:    files consistent.  Some systems have them there and some here, and some
182:    software depends on the macros being defined without including both.  */
183: 
184: /* `lockf' is a simpler interface to the locking facilities of `fcntl'.
185:    LEN is always relative to the current file position.
186:    The CMD argument is one of the following.  */
187: 
188: # define F_ULOCK 0      /* Unlock a previously locked region.  */
189: # define F_LOCK  1      /* Lock a region for exclusive use.  */
190: # define F_TLOCK 2      /* Test and lock a region for exclusive use.  */
191: # define F_TEST  3      /* Test a region for other processes locks.  */
192: 
193: # ifndef __USE_FILE_OFFSET64
194: extern int lockf (int __fd, int __cmd, __off_t __len);
195: # else
196: #  ifdef __REDIRECT
197: extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len), lockf64);
198: #  else
199: #   define lockf lockf64
200: #  endif
201: # endif
202: # ifdef __USE_LARGEFILE64
203: extern int lockf64 (int __fd, int __cmd, __off64_t __len);
204: # endif
205: #endif
206: 
207: #ifdef __USE_XOPEN2K
208: /* Advice the system about the expected behaviour of the application with
209:    respect to the file associated with FD.  */
210: # ifndef __USE_FILE_OFFSET64
211: extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len,
212:                           int __advise) __THROW;
213: # else
214:  # ifdef __REDIRECT_NTH
215: extern int __REDIRECT_NTH (posix_fadvise, (int __fd, __off64_t __offset,
216:                                            __off64_t __len, int __advise),
217:                            posix_fadvise64);
218: #  else
219: #   define posix_fadvise posix_fadvise64
220: #  endif
221: # endif
222: # ifdef __USE_LARGEFILE64
223: extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len,
224:                             int __advise) __THROW;
225: # endif
226: 
227: 
228: /* Reserve storage for the data of the file associated with FD.
229: 
230:    This function is a possible cancellation point and therefore not
231:    marked with __THROW.  */
232: # ifndef __USE_FILE_OFFSET64
233: extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len);
234: # else
235:  # ifdef __REDIRECT
236: extern int __REDIRECT (posix_fallocate, (int __fd, __off64_t __offset,
237:                                          __off64_t __len),
238:                        posix_fallocate64);
239: #  else
240: #   define posix_fallocate posix_fallocate64
241: #  endif
242: # endif
243: # ifdef __USE_LARGEFILE64
244: extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len);
245: # endif
246: #endif
247: 
248: 
249: /* Define some inlines helping to catch common problems.  */
250: #if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline \
251:     && defined __va_arg_pack_len
252: # include <bits/fcntl2.h>
253: #endif
254: 
255: __END_DECLS
256: 
257: #endif /* fcntl.h  */
258: 


for client 18.224.149.242
© Andrew Scott 2006 - 2024,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/