1 #ifndef _FCNTL_H
2 #define _FCNTL_H
3
4 #include <sys/types.h>
5
6 /* open/fcntl - NOCTTY, NDELAY isn't implemented yet */
7 #define O_ACCMODE 00003
8 #define O_RDONLY 00
9 #define O_WRONLY 01
10 #define O_RDWR 02
11 #define O_CREAT 00100 /* not fcntl */
12 #define O_EXCL 00200 /* not fcntl */
13 #define O_NOCTTY 00400 /* not fcntl */
14 #define O_TRUNC 01000 /* not fcntl */
15 #define O_APPEND 02000
16 #define O_NONBLOCK 04000
17 #define O_NDELAY O_NONBLOCK
18
19 /* Defines for fcntl-commands. Note that currently
20 * locking isn't supported, and other things aren't really
21 * tested.
22 */
23 #define F_DUPFD 0 /* dup */
24 #define F_GETFD 1 /* get f_flags */
25 #define F_SETFD 2 /* set f_flags */
26 #define F_GETFL 3 /* more flags (cloexec) */
27 #define F_SETFL 4
28 #define F_GETLK 5 /* not implemented */
29 #define F_SETLK 6
30 #define F_SETLKW 7
31
32 /* for F_[GET|SET]FL */
33 #define FD_CLOEXEC 1 /* actually anything with low bit set goes */
34
35 /* Ok, these are locking features, and aren't implemented at any
36 * level. POSIX wants them.
37 */
38 #define F_RDLCK 0
39 #define F_WRLCK 1
40 #define F_UNLCK 2
41
42 /* Once again - not implemented, but ... */
43 struct flock {
44 short l_type;
45 short l_whence;
46 off_t l_start;
47 off_t l_len;
48 pid_t l_pid;
49 };
50
51 extern int creat(const char * filename,mode_t mode);
52 extern int fcntl(int fildes,int cmd, ...);
53 extern int open(const char * filename, int flags, ...);
54
55 #endif