summaryrefslogtreecommitdiffstats
path: root/polyp/poll.c
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2006-01-05 22:51:37 +0000
committerPierre Ossman <ossman@cendio.se>2006-01-05 22:51:37 +0000
commit19d9fcbda8637099854f2d8147b402b4420d19f5 (patch)
tree993f0ebc9045bd893cd3039d0ae6277ee5806c05 /polyp/poll.c
parent2f74bb9d437fc165695e1d4bb7516ca979962a49 (diff)
Port to Windows. This is mostly glue layers for the poor POSIX support
on Windows. A few notes * Only sockets behave somewhat like file descriptors in UNIX. * There are no fixed paths. Closes thing is environment variables that point to system directories. We also figure out where the binary/dll is located and use that as configuration directory. git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/ossman@418 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'polyp/poll.c')
-rw-r--r--polyp/poll.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/polyp/poll.c b/polyp/poll.c
index 82ea3d88..7c25f348 100644
--- a/polyp/poll.c
+++ b/polyp/poll.c
@@ -36,6 +36,17 @@
#include <sys/select.h>
#endif
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+
+#define EBADF WSAEBADF
+#define ESHUTDOWN WSAESHUTDOWN
+#define ECONNRESET WSAECONNRESET
+#define ECONNABORTED WSAECONNABORTED
+#define ENETRESET WSAENETRESET
+
+#endif /* HAVE_WINSOCK2_H */
+
#ifndef HAVE_SYS_POLL_H
#include "util.h"
@@ -59,7 +70,16 @@ int poll (struct pollfd *fds, unsigned long int nfds, int timeout) {
return 0;
}
+#ifdef OS_IS_WIN32
+ /*
+ * Windows does not support signals properly so waiting for them would
+ * mean a deadlock.
+ */
+ pa_msleep(100);
+ return 0;
+#else
return select(0, NULL, NULL, NULL, NULL);
+#endif
}
for (f = fds; f < &fds[nfds]; ++f) {
@@ -138,6 +158,10 @@ int poll (struct pollfd *fds, unsigned long int nfds, int timeout) {
}
}
+#ifdef OS_IS_WIN32
+ errno = WSAGetLastError();
+#endif
+
if (ready > 0) {
ready = 0;
for (f = fds; f < &fds[nfds]; ++f) {