Commit
08b94556 introduced the timeout parameter. The empthread
implementation could change it, at least on some systems, and its user
worked around a possible change. However, that behavior was not
documented, and it's inconvenient. Fix the pthread implementation,
and remove the workaround.
char buf[IO_BUFSIZE];
int cc;
int res;
char buf[IO_BUFSIZE];
int cc;
int res;
- struct timeval timeout = iop->input_timeout;
/* Not a read IOP */
if ((iop->flags & IO_READ) == 0) {
/* Not a read IOP */
if ((iop->flags & IO_READ) == 0) {
}
/* Wait for the file to have input. */
if (waitforinput) {
}
/* Wait for the file to have input. */
if (waitforinput) {
- res = empth_select(iop->fd, EMPTH_FD_READ, &timeout);
+ res = empth_select(iop->fd, EMPTH_FD_READ, &iop->input_timeout);
if (res < 0) {
iop->flags |= IO_ERROR;
return -1;
if (res < 0) {
iop->flags |= IO_ERROR;
return -1;
-empth_select(int fd, int flags, struct timeval *tv)
+empth_select(int fd, int flags, struct timeval *timeout)
{
fd_set readmask;
fd_set writemask;
{
fd_set readmask;
fd_set writemask;
- n = select(fd + 1, &readmask, &writemask, (fd_set *) 0, tv);
+ if (timeout) {
+ tv = *timeout;
+ timeout = &tv;
+ }
+ n = select(fd + 1, &readmask, &writemask, NULL, timeout);
if (n < 0) {
if (errno == EINTR) /* go handle the signal */
if (n < 0) {
if (errno == EINTR) /* go handle the signal */