| 1 | #include <fcntl.h> |
| 2 | #include <string.h> |
| 3 | |
| 4 | int __fmodeflags(const char *mode) |
| 5 | { |
| 6 | 	int flags; |
| 7 | 	if (strchr(mode, '+')) flags = O_RDWR; |
| 8 | 	else if (*mode == 'r') flags = O_RDONLY; |
| 9 | 	else flags = O_WRONLY; |
| 10 | 	if (strchr(mode, 'x')) flags |= O_EXCL; |
| 11 | 	if (strchr(mode, 'e')) flags |= O_CLOEXEC; |
| 12 | 	if (*mode != 'r') flags |= O_CREAT; |
| 13 | 	if (*mode == 'w') flags |= O_TRUNC; |
| 14 | 	if (*mode == 'a') flags |= O_APPEND; |
| 15 | 	return flags; |
| 16 | } |