Define EV_SET() for kqueue() on systems that don't have it
authorAlexander Barton <alex@barton.de>
Tue, 4 Sep 2012 21:28:32 +0000 (23:28 +0200)
committerAlexander Barton <alex@barton.de>
Tue, 4 Sep 2012 21:28:32 +0000 (23:28 +0200)
Some systems, notably FreeBSD 4.x, do have the kqueue() function but
lack the definition of EV_SET() in their header files -- but don't
worry, we can #define it on our own ;-)

Definition taken from /usr/include/sys/event.h of FreeBSD 8.1.
Patch tested on FreeBSD 4.1 by Götz Hoffart. Thanks!

src/ngircd/io.c

index 9ffdfd6b8320e4ab12439e3273e92d99ceceb8a1..cce6ef536557e7376bf93a1a8df9f912218ae0e4 100644 (file)
@@ -86,6 +86,20 @@ static int io_masterfd;
 
 static int io_dispatch_kqueue(struct timeval *tv);
 static bool io_event_change_kqueue(int, short, const int action);
+
+#ifndef EV_SET
+/* Taken from /usr/include/sys/event.h of FreeBSD 8.1 and required by all
+ * platforms that have kqueue but lack EV_SET() -- for example FreeBSD 4. */
+#define EV_SET(kevp, a, b, c, d, e, f) do {    \
+       struct kevent *__kevp__ = (kevp);       \
+       __kevp__->ident = (a);                  \
+       __kevp__->filter = (b);                 \
+       __kevp__->flags = (c);                  \
+       __kevp__->fflags = (d);                 \
+       __kevp__->data = (e);                   \
+       __kevp__->udata = (f);                  \
+} while(0)
+#endif
 #endif
 
 #ifdef IO_USE_POLL