8 * BUG: advisory locking not implemented
11 #define OFL (O_ACCMODE|O_NONBLOCK|O_APPEND)
14 fcntl(int fd, int cmd, ...)
24 arg = va_arg(va, int);
27 if(fd<0 || fd>=OPEN_MAX || !(fi->flags&FD_ISOPEN))
31 if(fi->flags&(FD_BUFFERED|FD_BUFFEREDX)){
32 err = EGREG; /* dup of buffered fd not implemented */
36 for(i = (arg>0)? arg : 0; i<OPEN_MAX; i++)
37 if(!(_fdinfo[i].flags&FD_ISOPEN))
51 fans->flags = fi->flags&~FD_CLOEXEC;
52 fans->oflags = oflags;
59 ans = fi->flags&FD_CLOEXEC;
62 fi->flags = (fi->flags&~FD_CLOEXEC)|(arg&FD_CLOEXEC);
68 fi->oflags = (fi->oflags&~OFL)|(arg&OFL);