-/*
- * Copyright (C) 1995-2007, Index Data ApS
+/* This file is part of the YAZ toolkit.
+ * Copyright (C) 1995-2010 Index Data
* See the file LICENSE for details.
- *
- * $Id: poll.c,v 1.3 2007-11-10 08:59:31 adam Exp $
*/
/**
* \file
enum yaz_poll_mask mask = fds[i].input_mask;
int fd = fds[i].fd;
+ /* Timeout events */
+ if (fd < 0)
+ continue;
+
if (mask & yaz_poll_read)
FD_SET(fd, &input);
if (mask & yaz_poll_write)
{
for (i = 0; i < num_fds; i++)
{
- enum yaz_poll_mask mask = 0;
+ enum yaz_poll_mask mask = yaz_poll_none;
int fd = fds[i].fd;
if (!r)
- mask += yaz_poll_timeout;
- else
- {
+ yaz_poll_add(mask, yaz_poll_timeout);
+ else if (fd >= 0) {
if (FD_ISSET(fd, &input))
- mask += yaz_poll_read;
+ yaz_poll_add(mask, yaz_poll_read);
if (FD_ISSET(fd, &output))
- mask += yaz_poll_write;
+ yaz_poll_add(mask, yaz_poll_write);
if (FD_ISSET(fd, &except))
- mask += yaz_poll_except;
+ yaz_poll_add(mask, yaz_poll_except);
}
fds[i].output_mask = mask;
}
{
for (i = 0; i < num_fds; i++)
{
- enum yaz_poll_mask mask = 0;
+ enum yaz_poll_mask mask = yaz_poll_none;
if (!r)
- mask += yaz_poll_timeout;
+ yaz_poll_add(mask, yaz_poll_timeout);
else
{
if (pollfds[i].revents & POLLIN)
- mask += yaz_poll_read;
+ yaz_poll_add(mask, yaz_poll_read);
if (pollfds[i].revents & POLLOUT)
- mask += yaz_poll_write;
- if (pollfds[i].revents & POLLERR)
- mask += yaz_poll_except;
+ yaz_poll_add(mask, yaz_poll_write);
+ if (pollfds[i].revents & ~(POLLIN | POLLOUT))
+ {
+ yaz_poll_add(mask, yaz_poll_except);
+ }
}
fds[i].output_mask = mask;
}
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab