summaryrefslogtreecommitdiff
path: root/src/common/fakepoll.h
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2004-02-20 23:41:45 +0000
committerNick Mathewson <nickm@torproject.org>2004-02-20 23:41:45 +0000
commit67a273962a3485610fc8eeeb0a3f639d6df53478 (patch)
treeacd5259f870b6268eb8102d5135364d14566e670 /src/common/fakepoll.h
parentfd4dc9de39e5f86cfebdf73abd10a718231274fb (diff)
downloadtor-67a273962a3485610fc8eeeb0a3f639d6df53478.tar.gz
tor-67a273962a3485610fc8eeeb0a3f639d6df53478.zip
On OSX, decline to use the built-in select-baed poll wrapper, since it seems to sometimes not work.
svn:r1114
Diffstat (limited to 'src/common/fakepoll.h')
-rw-r--r--src/common/fakepoll.h27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/common/fakepoll.h b/src/common/fakepoll.h
index 61959d6c92..93e287925d 100644
--- a/src/common/fakepoll.h
+++ b/src/common/fakepoll.h
@@ -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