support _BSD_SOURCE feature test macro
[musl] / include / fcntl.h
1 #ifndef _FCNTL_H
2 #define _FCNTL_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #define __NEED_off_t
9 #define __NEED_pid_t
10 #define __NEED_mode_t
11
12 #include <bits/alltypes.h>
13
14 #include <bits/fcntl.h>
15
16 struct flock
17 {
18         short l_type;
19         short l_whence;
20         off_t l_start;
21         off_t l_len;
22         pid_t l_pid;
23 };
24
25 int creat(const char *, mode_t);
26 int fcntl(int, int, ...);
27 int open(const char *, int, ...);
28 int openat(int, const char *, int, ...);
29 int posix_fadvise(int, off_t, off_t, int);
30 int posix_fallocate(int, off_t, off_t);
31
32 #define O_ACCMODE 03
33 #define O_RDONLY  00
34 #define O_WRONLY  01
35 #define O_RDWR    02
36
37 #define F_DUPFD_CLOEXEC 1030
38
39 #define F_RDLCK 0
40 #define F_WRLCK 1
41 #define F_UNLCK 2
42
43 #define FD_CLOEXEC 1
44
45 #define AT_FDCWD (-100)
46 #define AT_SYMLINK_NOFOLLOW 0x100
47 #define AT_REMOVEDIR 0x200
48 #define AT_SYMLINK_FOLLOW 0x400
49 #define AT_EACCESS 0x200
50
51 #define POSIX_FADV_NORMAL     0
52 #define POSIX_FADV_RANDOM     1
53 #define POSIX_FADV_SEQUENTIAL 2
54 #define POSIX_FADV_WILLNEED   3
55 #define POSIX_FADV_DONTNEED   4
56 #define POSIX_FADV_NOREUSE    5
57
58 #undef SEEK_SET
59 #undef SEEK_CUR
60 #undef SEEK_END
61 #define SEEK_SET 0
62 #define SEEK_CUR 1
63 #define SEEK_END 2
64
65 #ifndef S_IRUSR
66 #define S_ISUID 04000
67 #define S_ISGID 02000
68 #define S_ISVTX 01000
69 #define S_IRUSR 0400
70 #define S_IWUSR 0200
71 #define S_IXUSR 0100
72 #define S_IRWXU 0700
73 #define S_IRGRP 0040
74 #define S_IWGRP 0020
75 #define S_IXGRP 0010
76 #define S_IRWXG 0070
77 #define S_IROTH 0004
78 #define S_IWOTH 0002
79 #define S_IXOTH 0001
80 #define S_IRWXO 0007
81 #endif
82
83 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
84 #define FAPPEND O_APPEND
85 #define FFSYNC O_FSYNC
86 #define FASYNC O_ASYNC
87 #define FNONBLOCK O_NONBLOCK
88 #define FNDELAY O_NDELAY
89
90 #ifndef F_OK
91 #define F_OK 0
92 #define R_OK 4
93 #define W_OK 2
94 #define X_OK 1
95 #define F_ULOCK 0
96 #define F_LOCK  1
97 #define F_TLOCK 2
98 #define F_TEST  3
99 int lockf(int, int, off_t);
100 #endif
101 #endif
102
103 #ifdef _LARGEFILE64_SOURCE
104 #define open64 open
105 #define openat64 openat
106 #define creat64 creat
107 #define lockf64 lockf
108 #define posix_fadvise64 posix_fadvise
109 #define posix_fallocate64 posix_fallocate
110 #define off64_t off_t
111 #endif
112
113 #ifdef __cplusplus
114 }
115 #endif
116
117 #endif