|
@@ -7,10 +7,27 @@
|
|
|
|
|
|
#include "orconfig.h"
|
|
|
|
|
|
-#ifndef HAVE_POLL_H
|
|
|
-#ifndef HAVE_SYS_POLL_H
|
|
|
+#define POLL_NO_WARN
|
|
|
+
|
|
|
+#if defined(HAVE_POLL_H)
|
|
|
+#include <poll.h>
|
|
|
+#elif defined(HAVE_SYS_POLL_H)
|
|
|
+#include <sys/poll.h>
|
|
|
+#endif
|
|
|
+
|
|
|
+/* If _POLL_EMUL_H_ is defined, then poll is just a just a thin wrapper around
|
|
|
+ * select. On Mac OS 10.3, this wrapper is kinda flakey, and we should
|
|
|
+ * use our own.
|
|
|
+ */
|
|
|
+#if (defined(HAVE_POLL_H)||defined(HAVE_SYS_POLL_H)) && !defined(_POLL_EMUL_H_)
|
|
|
+#define tor_poll poll
|
|
|
+#else
|
|
|
#define USE_FAKE_POLL
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef USE_FAKE_POLL
|
|
|
|
|
|
+#ifndef _POLL_EMUL_H_
|
|
|
struct pollfd {
|
|
|
int fd;
|
|
|
short events;
|
|
@@ -23,9 +40,9 @@ struct pollfd {
|
|
|
#define POLLERR 0x0008
|
|
|
#define POLLHUP 0x0010
|
|
|
#define POLLNVAL 0x0020
|
|
|
-
|
|
|
-int poll(struct pollfd *ufds, unsigned int nfds, int timeout);
|
|
|
-
|
|
|
#endif
|
|
|
+
|
|
|
+int tor_poll(struct pollfd *ufds, unsigned int nfds, int timeout);
|
|
|
#endif
|
|
|
+
|
|
|
#endif
|