ref: 70eb96f88f3c6fa0f66d67ba469a07cfa4e13193
dir: /lib9/create.c/
#include "lib9.h" #include <sys/types.h> #include <fcntl.h> int create(char *f, int mode, int perm) { int m; m = 0; switch(mode & 3){ case OREAD: case OEXEC: m = O_RDONLY; break; case OWRITE: m = O_WRONLY; break; case ORDWR: m = O_RDWR; break; } m |= O_CREAT|O_TRUNC; if(perm & DMDIR){ #ifndef _WIN32_WINNT if(mkdir(f, perm&0777) < 0) #endif #ifdef _WIN32_WINNT if(mkdir(f) < 0) #endif return -1; perm &= ~DMDIR; m &= 3; } return open(f, m, perm); }