diff --git a/src/backend.c b/src/backend.c index 952409db6ad84b4dc3e28b72200b17beabd9b4b7..fd94495f407f6af138446e33e75f66bed0e9bee0 100644 --- a/src/backend.c +++ b/src/backend.c @@ -4,7 +4,7 @@ ||| See the files COPYING and DISCLAIMER for more information. \*/ #include "global.h" -RCSID("$Id: backend.c,v 1.38 1998/11/05 23:12:32 grubba Exp $"); +RCSID("$Id: backend.c,v 1.39 1998/11/05 23:30:42 grubba Exp $"); #include "fdlib.h" #include "backend.h" #include <errno.h> @@ -217,7 +217,7 @@ void init_backend(void) #ifdef WITH_OOB my_FD_ZERO(&selectors.except); #endif /* WITH_OOB */ -#endif +#endif /* !HAVE_POLL */ if(pike_make_pipe(wakeup_pipe) < 0) fatal("Couldn't create backend wakup pipe! errno=%d.\n",errno); set_nonblocking(wakeup_pipe[0],1); @@ -269,7 +269,10 @@ void set_read_callback(int fd,file_callback cb,void *data) if(max_fd < fd) max_fd = fd; wake_up_backend(); }else{ -#ifndef HAVE_POLL +#ifdef HAVE_POLL + if(was_set) + POLL_FD_CLR(fd, POLLRDNORM); +#else /* !HAVE_POLL */ if(fd <= max_fd) { my_FD_CLR(fd, &selectors.read); @@ -286,10 +289,7 @@ void set_read_callback(int fd,file_callback cb,void *data) max_fd--; } } -#else - if(was_set) - POLL_FD_CLR(fd, POLLRDNORM); -#endif +#endif /* HAVE_POLL */ } } @@ -310,19 +310,27 @@ void set_write_callback(int fd,file_callback cb,void *data) { #ifdef HAVE_POLL if(!was_set) - POLL_FD_SET(fd,POLLOUT); + POLL_FD_SET(fd, POLLOUT); #else my_FD_SET(fd, &selectors.write); #endif if(max_fd < fd) max_fd = fd; wake_up_backend(); - }else{ -#ifndef HAVE_POLL + } else { +#ifdef HAVE_POLL +#if defined(WITH_OOB) && (POLLWRBAND == POLLOUT) + if (was_set && !fds[fd].write_oob.callback) + POLL_FD_CLR(fd, POLLOUT); +#else /* POLLWRBAND != POLLOUT */ + if(was_set) + POLL_FD_CLR(fd, POLLOUT); +#endif /* POLLWRBAND == POLLOUT */ +#else /* !HAVE_POLL */ if(fd <= max_fd) { -#ifdef WITH_POLL +#ifdef WITH_OOB if (!fds[fd].write_oob.callback) { -#endif /* WITH_POLL */ +#endif /* WITH_OOB */ my_FD_CLR(fd, &selectors.write); if(fd == max_fd) { @@ -335,19 +343,11 @@ void set_write_callback(int fd,file_callback cb,void *data) ) max_fd--; } -#ifdef WITH_POLL +#ifdef WITH_OOB } -#endif /* WITH_POLL */ +#endif /* WITH_OOB */ } -#else -#if defined(WITH_OOB) && (POLLWRBAND == POLLOUT) - if (was_set && !fds[fd].write_oob.callback) - POLL_FD_CLR(fd, POLLOUT); -#else /* POLLWRBAND != POLLOUT */ - if(was_set) - POLL_FD_CLR(fd, POLLOUT); -#endif /* POLLWRBAND == POLLOUT */ -#endif +#endif /* HAVE_POLL */ } } @@ -374,7 +374,10 @@ void set_read_oob_callback(int fd,file_callback cb,void *data) if(max_fd < fd) max_fd = fd; wake_up_backend(); }else{ -#ifndef HAVE_POLL +#ifdef HAVE_POLL + if(was_set) + POLL_FD_CLR(fd, POLLRDBAND); +#else /* !HAVE_POLL */ if(fd <= max_fd) { my_FD_CLR(fd, &selectors.except); @@ -388,10 +391,7 @@ void set_read_oob_callback(int fd,file_callback cb,void *data) max_fd--; } } -#else - if(was_set) - POLL_FD_CLR(fd, POLLRDBAND); -#endif +#endif /* HAVE_POLL */ } } @@ -418,7 +418,15 @@ void set_write_oob_callback(int fd,file_callback cb,void *data) if(max_fd < fd) max_fd = fd; wake_up_backend(); }else{ -#ifndef HAVE_POLL +#ifdef HAVE_POLL +#if POLLWRBAND == POLLOUT + if (was_set && !fds[fd].write.callback) + POLL_FD_CLR(fd,POLLWRBAND); +#else /* POLLWRBAND != POLLOUT */ + if(was_set) + POLL_FD_CLR(fd,POLLWRBAND); +#endif /* POLLWRBAND == POLLOUT */ +#else /* !HAVE_POLL */ /* FIXME:? */ if(fd <= max_fd) { @@ -434,15 +442,7 @@ void set_write_oob_callback(int fd,file_callback cb,void *data) } } } -#else -#if POLLWRBAND == POLLOUT - if (was_set && !fds[fd].write.callback) - POLL_FD_CLR(fd,POLLWRBAND); -#else /* POLLWRBAND != POLLOUT */ - if(was_set) - POLL_FD_CLR(fd,POLLWRBAND); -#endif /* POLLWRBAND == POLLOUT */ -#endif +#endif /* HAVE_POLL */ } } #endif /* WITH_OOB */