aboutsummaryrefslogtreecommitdiff
path: root/sys/compat
diff options
context:
space:
mode:
authorMark Newton <newton@FreeBSD.org>1999-07-30 13:12:26 +0000
committerMark Newton <newton@FreeBSD.org>1999-07-30 13:12:26 +0000
commitf46f4cccb85842a2cd9b9e4fb6ef3b8cce1a850e (patch)
treeb87e17c599c68ab75d341aecadd09c1172f0f638 /sys/compat
parent593bbda37661c6f6c4ba2fac02969da776bf3b60 (diff)
downloadsrc-f46f4cccb85842a2cd9b9e4fb6ef3b8cce1a850e.tar.gz
src-f46f4cccb85842a2cd9b9e4fb6ef3b8cce1a850e.zip
Fix svr4_sys_poll(); SysV STREAMS produce return values from poll() which
BSD sockets don't. Guess at a correct emulation for those values (it seems to work for telnet, ftp and friends)
Notes
Notes: svn path=/head/; revision=49278
Diffstat (limited to 'sys/compat')
-rw-r--r--sys/compat/svr4/svr4_filio.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/sys/compat/svr4/svr4_filio.c b/sys/compat/svr4/svr4_filio.c
index bc7f9701f99f..9dfeced92f6b 100644
--- a/sys/compat/svr4/svr4_filio.c
+++ b/sys/compat/svr4/svr4_filio.c
@@ -82,21 +82,17 @@ svr4_sys_poll(p, uap)
error = cerr;
goto done;
}
+ DPRINTF(("poll(%x, %x, %d) = %d\n", SCARG(uap, fds), SCARG(uap, nfds),
+ SCARG(uap, timeout), p->p_retval[0]));
for (idx = 0; idx < SCARG(uap, nfds); idx++) {
/* POLLWRNORM already equals POLLOUT, so we don't worry about that */
- if (pfd[idx].revents & (POLLIN | POLLRDNORM | POLLRDBAND | POLLPRI))
- pfd[idx].revents |= (POLLIN | POLLRDBAND | POLLRDNORM | POLLPRI);
if (pfd[idx].revents & (POLLOUT | POLLWRNORM | POLLWRBAND))
pfd[idx].revents |= (POLLOUT | POLLWRNORM | POLLWRBAND);
- pfd[idx].revents &= POLLSTANDARD; /* don't want to surprise SysV */
-
DPRINTF(("pollfd[%d]->fd = %d\n", idx, pfd[idx].fd));
DPRINTF(("pollfd[%d]->events = %x\n", idx, pfd[idx].events));
DPRINTF(("pollfd[%d]->revents = %x\n", idx, pfd[idx].revents));
}
- DPRINTF(("poll(%x, %x, %d) = %d\n", SCARG(uap, fds), SCARG(uap, nfds),
- SCARG(uap, timeout), p->p_retval[0]));
if ((cerr = copyout(pfd, SCARG(uap, fds), siz)) != 0) {
error = cerr;
goto done; /* yeah, I know it's the next line, but this way I won't