I notice in some places, there are double-negates, like: me->read_ready |= ret || !!(events & (FD_READ | FD_ACCEPT | FD_CLOSE));
What's the rationale for these? To enforce either a 0 or 1, to be directly in line with boolean, rather than a zero or non-zero result? -cl -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/