1 #include "lib9.h" 2 #include <sys/types.h> 3 #include <fcntl.h> 4 5 int create(char * f,int mode,int perm)6create(char *f, int mode, int perm) 7 { 8 int m; 9 10 m = 0; 11 switch(mode & 3){ 12 case OREAD: 13 case OEXEC: 14 m = O_RDONLY; 15 break; 16 case OWRITE: 17 m = O_WRONLY; 18 break; 19 case ORDWR: 20 m = O_RDWR; 21 break; 22 } 23 m |= O_CREAT|O_TRUNC; 24 25 if(perm & DMDIR){ 26 if(mkdir(f, perm&0777) < 0) 27 return -1; 28 perm &= ~DMDIR; 29 m &= 3; 30 } 31 return open(f, m, perm); 32 } 33