Pristine Ack-5.5
[Ack-5.5.git] / lib / minix / include / fcntl.h
1 /* The <fcntl.h> header is needed by the open() and fcntl() system calls,
2  * which  have a variety of parameters and flags.  They are described here.  
3  * The formats of the calls to each of these are:
4  *
5  *      open(path, oflag [,mode])       open a file
6  *      fcntl(fd, cmd [,arg])           get or set file attributes
7  * 
8  */
9
10 #ifndef _FCNTL_H
11 #define _FCNTL_H
12
13 /* These values are used for cmd in fcntl().  POSIX Table 6-1.  */
14 #define F_DUPFD            0    /* duplicate file descriptor */
15 #define F_GETFD            1    /* get file descriptor flags */
16 #define F_SETFD            2    /* set file descriptor flags */
17 #define F_GETFL            3    /* get file status flags */
18 #define F_SETFL            4    /* set file status flags */
19 #define F_GETLK            5    /* get record locking information */
20 #define F_SETLK            6    /* set record locking information */
21 #define F_SETLKW           7    /* set record locking info; wait if blocked */
22
23 /* File descriptor flags used for fcntl().  POSIX Table 6-2. */
24 #define FD_CLOEXEC         1    /* close on exec flag for third arg of fcntl */
25
26 /* L_type values for record locking with fcntl().  POSIX Table 6-3. */
27 #define F_RDLCK            0    /* shared or read lock */
28 #define F_WRLCK            1    /* exclusive or write lock */
29 #define F_UNLCK            2    /* unlock */
30
31 /* Oflag values for open().  POSIX Table 6-4. */
32 #define O_CREAT        00100    /* creat file if it doesn't exist */
33 #define O_EXCL         00200    /* exclusive use flag */
34 #define O_NOCTTY       00400    /* do not assign a controlling terminal */
35 #define O_TRUNC        01000    /* truncate flag */
36
37 /* File status flags for open() and fcntl().  POSIX Table 6-5. */
38 #define O_APPEND       02000    /* set append mode */
39 #define O_NONBLOCK     04000    /* no delay */
40
41 /* File access modes for open() and fcntl().  POSIX Table 6-6. */
42 #define O_RDONLY           0    /* open(name, O_RDONLY) opens read only */
43 #define O_WRONLY           1    /* open(name, O_WRONLY) opens write only */
44 #define O_RDWR             2    /* open(name, O_RDWR) opens read/write */
45
46 /* Mask for use with file access modes.  POSIX Table 6-7. */
47 #define O_ACCMODE         03    /* mask for file access modes */
48
49 /* Struct used for locking.  POSIX Table 6-8. */
50 struct flock {
51   short l_type;                 /* type: F_RDLCK, F_WRLCK, or F_UNLCK */
52   short l_whence;               /* flag for starting offset */
53   off_t l_start;                /* relative offset in bytes */
54   off_t l_len;                  /* size; if 0, then until EOF */
55   pid_t l_pid;                  /* process id of the locks' owner */
56 };
57
58
59 /* Function Prototypes. */
60 #ifndef _ANSI_H
61 #include <ansi.h>
62 #endif
63
64 _PROTOTYPE( int creat, (const char *_path, Mode_t _mode)                );
65 _PROTOTYPE( int fcntl, (int _filedes, int _cmd, ...)                    );
66 _PROTOTYPE( int open,  (const char *_path, int _oflag, ...)             );
67
68 #endif /* _FCNTL_H */