1#include <fcntl.h>
2#include <string.h>
3
4int __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}
17