diff --git a/uselect.c b/uselect.c index 2e1e25cd..dca4f0cc 100644 --- a/uselect.c +++ b/uselect.c @@ -1,5 +1,6 @@ #include #include +#include #include "uselect.h" /* for logging */ @@ -13,14 +14,19 @@ int uselect(int nfds, struct timeval *timeout) { sigset_t sigmask; - struct timespec tmo; + struct timespec tmo, *tmoPtr; int result; char buffer[80]; sigfillset(&sigmask); - tmo.tv_sec = timeout->tv_sec; - tmo.tv_nsec = timeout->tv_usec * 1000; - result = pselect(nfds, readfds, writefds, exceptfds, &tmo, &sigmask); + if (timeout) { + tmo.tv_sec = timeout->tv_sec; + tmo.tv_nsec = timeout->tv_usec * 1000; + tmoPtr = &tmo; + } else { + tmoPtr = NULL; + } + result = pselect(nfds, readfds, writefds, exceptfds, tmoPtr, &sigmask); if (result < 0 && errno == EINTR) { WriteToCommandLog("SYS>","pselect was interrupted!"); }