Rev 3 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2 | pj | 1 | /* Copyright (C) 1991, 92, 94, 95, 96, 97, 98 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 Library General Public License as |
||
6 | published by the Free Software Foundation; either version 2 of the |
||
7 | 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 | Library General Public License for more details. |
||
13 | |||
14 | You should have received a copy of the GNU Library General Public |
||
15 | License along with the GNU C Library; see the file COPYING.LIB. If not, |
||
16 | write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
||
17 | Boston, MA 02111-1307, USA. */ |
||
18 | |||
19 | /* |
||
20 | * POSIX Standard: 6.5 File Control Operations <fcntl.h> |
||
21 | */ |
||
22 | |||
23 | #ifndef _FCNTL_H |
||
24 | #define _FCNTL_H 1 |
||
25 | |||
26 | #include <features.h> |
||
27 | |||
28 | /* This must be early so <bits/fcntl.h> can define types winningly. */ |
||
29 | __BEGIN_DECLS |
||
30 | |||
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 | |||
35 | /* For XPG all symbols from <sys/stat.h> should also be available. */ |
||
36 | #ifdef __USE_XOPEN |
||
37 | # include <sys/stat.h> |
||
38 | #endif |
||
39 | |||
40 | /* are on unistd.h */ |
||
41 | #if 0 |
||
42 | |||
43 | #ifdef __USE_MISC |
||
44 | # ifndef R_OK /* Verbatim from <unistd.h>. Ugh. */ |
||
45 | /* Values for the second argument to access. |
||
46 | These may be OR'd together. */ |
||
47 | # define R_OK 4 /* Test for read permission. */ |
||
48 | # define W_OK 2 /* Test for write permission. */ |
||
49 | # define X_OK 1 /* Test for execute permission. */ |
||
50 | # define F_OK 0 /* Test for existence. */ |
||
51 | # endif |
||
52 | #endif /* Use misc. */ |
||
53 | |||
54 | #endif /* 0 */ |
||
55 | |||
56 | /* XPG wants the following symbols. */ |
||
57 | #ifdef __USE_XOPEN /* <stdio.h> has the same definitions. */ |
||
58 | # define SEEK_SET 0 /* Seek from beginning of file. */ |
||
59 | # define SEEK_CUR 1 /* Seek from current position. */ |
||
60 | # define SEEK_END 2 /* Seek from end of file. */ |
||
61 | #endif /* XPG */ |
||
62 | |||
63 | /* Do the file control operation described by CMD on FD. |
||
64 | The remaining arguments are interpreted depending on CMD. */ |
||
65 | extern int __fcntl __P ((int __fd, int __cmd, ...)); |
||
66 | extern int fcntl __P ((int __fd, int __cmd, ...)); |
||
67 | |||
68 | /* Open FILE and return a new file descriptor for it, or -1 on error. |
||
69 | OFLAG determines the type of access used. If O_CREAT is on OFLAG, |
||
70 | the third argument is taken as a `mode_t', the mode of the created file. */ |
||
71 | extern int __open __P ((__const char *__file, int __oflag, ...)); |
||
72 | #ifndef __USE_FILE_OFFSET64 |
||
73 | extern int open __P ((__const char *__file, int __oflag, ...)); |
||
74 | #else |
||
75 | # ifdef __REDIRECT |
||
76 | extern int __REDIRECT (open, __P ((__const char *__file, int __oflag, ...)), |
||
77 | open64); |
||
78 | # else |
||
79 | # define open open64 |
||
80 | # endif |
||
81 | #endif |
||
82 | #ifdef __USE_LARGEFILE64 |
||
83 | extern int open64 __P ((__const char *__file, int __oflag, ...)); |
||
84 | #endif |
||
85 | |||
86 | /* Create and open FILE, with mode MODE. |
||
87 | This takes an `int' MODE argument because that is |
||
88 | what `mode_t' will be widened to. */ |
||
89 | #ifndef __USE_FILE_OFFSET64 |
||
90 | extern int creat __P ((__const char *__file, __mode_t __mode)); |
||
91 | #else |
||
92 | # ifdef __REDIRECT |
||
93 | extern int __REDIRECT (creat, __P ((__const char *__file, __mode_t __mode)), |
||
94 | creat64); |
||
95 | # else |
||
96 | # define creat creat64 |
||
97 | # endif |
||
98 | #endif |
||
99 | #ifdef __USE_LARGEFILE64 |
||
100 | extern int creat64 __P ((__const char *__file, __mode_t __mode)); |
||
101 | #endif |
||
102 | |||
103 | #if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \ |
||
104 | && !defined __USE_POSIX)) |
||
105 | /* NOTE: These declarations also appear in <unistd.h>; be sure to keep both |
||
106 | files consistent. Some systems have them there and some here, and some |
||
107 | software depends on the macros being defined without including both. */ |
||
108 | |||
109 | /* `lockf' is a simpler interface to the locking facilities of `fcntl'. |
||
110 | LEN is always relative to the current file position. |
||
111 | The CMD argument is one of the following. */ |
||
112 | |||
113 | # define F_ULOCK 0 /* Unlock a previously locked region. */ |
||
114 | # define F_LOCK 1 /* Lock a region for exclusive use. */ |
||
115 | # define F_TLOCK 2 /* Test and lock a region for exclusive use. */ |
||
116 | # define F_TEST 3 /* Test a region for other processes locks. */ |
||
117 | |||
118 | # ifndef __USE_FILE_OFFSET64 |
||
119 | extern int lockf __P ((int __fd, int __cmd, __off_t __len)); |
||
120 | # else |
||
121 | # ifdef __REDIRECT |
||
122 | extern int __REDIRECT (lockf, __P ((int __fd, int __cmd, __off64_t __len)), |
||
123 | lockf64); |
||
124 | # else |
||
125 | # define lockf lockf64 |
||
126 | # endif |
||
127 | # endif |
||
128 | # ifdef __USE_LARGEFILE64 |
||
129 | extern int lockf64 __P ((int __fd, int __cmd, __off64_t __len)); |
||
130 | # endif |
||
131 | #endif |
||
132 | |||
133 | __END_DECLS |
||
134 | |||
135 | #endif /* fcntl.h */ |