| #include <u.h> | |
| #define NOPLAN9DEFINES | |
| #include <libc.h> | |
| int | |
| p9open(char *name, int mode) | |
| { | |
| int cexec, rclose; | |
| int fd, umode; | |
| umode = mode&3; | |
| cexec = mode&OCEXEC; | |
| rclose = mode&ORCLOSE; | |
| mode &= ~(3|OCEXEC|ORCLOSE); | |
| if(mode&OTRUNC){ | |
| umode |= O_TRUNC; | |
| mode ^= OTRUNC; | |
| } | |
| if(mode){ | |
| werrstr("mode not supported"); | |
| return -1; | |
| } | |
| fd = open(name, umode); | |
| if(fd >= 0){ | |
| if(cexec) | |
| fcntl(fd, F_SETFL, FD_CLOEXEC); | |
| if(rclose) | |
| remove(name); | |
| } | |
| return fd; | |
| } |