mirror of
https://github.com/Interlisp/maiko.git
synced 2026-01-30 13:26:53 +00:00
Update fcntl F_SETFL usage. (#144)
This changes from `FASYNC` to `O_ASYNC`, `FNDELAY` to `O_NONBLOCK`, and `O_NDELAY` to `O_NONBLOCK`. These are the modern names. `O_NONBLOCK` is part of the POSIX standard. However, `O_ASYNC` is specific to Linux and BSD. It is not available on Solaris, where we still need to use `FASYNC`. Also, the behavior of having I/O trigger a `SIGIO` signal is not in POSIX, since the `SIGIO` signal is not in POSIX. Instead, it is only the behavior of having `SIGURG` being signalled for out of band data that is specified. We also takes this opportunity to collapse some multi-line calls to get the flags, store it into a temp, and then set them, to just doing it in one line, skipping the stored temporary value. We also change one instance of `65535 - FNDELAY` to `~O_NONBLOCK`. Closes interlisp/medley#85.
This commit is contained in:
@@ -84,7 +84,7 @@ LispPTR CHAR_openfile(LispPTR *args)
|
||||
Lisp_errno = (int *)(Addr68k_from_LADDR(args[2]));
|
||||
|
||||
LispStringToCString(args[0], pathname, MAXPATHLEN);
|
||||
flags = O_NDELAY;
|
||||
flags = O_NONBLOCK;
|
||||
ERRSETJMP(NIL);
|
||||
/* TIMEOUT( rval=stat(pathname, &statbuf) );
|
||||
if(rval == 0){ } */
|
||||
@@ -103,7 +103,7 @@ LispPTR CHAR_openfile(LispPTR *args)
|
||||
}
|
||||
/* Prevent I/O requests from blocking -- make them error */
|
||||
/* if no char is available, or there's no room in pipe. */
|
||||
fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | FNDELAY);
|
||||
fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_NONBLOCK);
|
||||
|
||||
return (GetSmallp(fd));
|
||||
#endif /* DOS */
|
||||
|
||||
Reference in New Issue
Block a user