]> git.ipfire.org Git - thirdparty/git.git/commitdiff
compat/poll: prepare for targeting Windows Vista
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Wed, 3 Oct 2018 19:43:41 +0000 (12:43 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 4 Oct 2018 12:39:56 +0000 (05:39 -0700)
Windows Vista (and later) actually have a working poll(), but we still
cannot use it because it only works on sockets.

So let's detect when we are targeting Windows Vista and undefine those
constants, and define `pollfd` so that we can declare our own pollfd
struct.

We also need to make sure that we override those constants *after*
`winsock2.h` has been `#include`d (otherwise we would not really
override those constants).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
compat/poll/poll.c
compat/poll/poll.h

index 7ed3fbbea13c994467280ed3e981ae9f37f15c09..ad5dcde439d3db239c29cda25d30e6b3a847a861 100644 (file)
@@ -29,9 +29,6 @@
 
 #include <sys/types.h>
 
-/* Specification.  */
-#include <poll.h>
-
 #include <errno.h>
 #include <limits.h>
 #include <assert.h>
@@ -55,6 +52,9 @@
 # include <unistd.h>
 #endif
 
+/* Specification.  */
+#include "poll.h"
+
 #ifdef HAVE_SYS_IOCTL_H
 # include <sys/ioctl.h>
 #endif
index cd1995292a536f33eb1bf698eaddd761b34d05bd..1e1597360f44850b98d18390f4cbd268e5b31483 100644 (file)
 #ifndef _GL_POLL_H
 #define _GL_POLL_H
 
+#if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x600
+/* Vista has its own, socket-only poll() */
+#undef POLLIN
+#undef POLLPRI
+#undef POLLOUT
+#undef POLLERR
+#undef POLLHUP
+#undef POLLNVAL
+#undef POLLRDNORM
+#undef POLLRDBAND
+#undef POLLWRNORM
+#undef POLLWRBAND
+#define pollfd compat_pollfd
+#endif
+
 /* fake a poll(2) environment */
 #define POLLIN      0x0001      /* any readable data available   */
 #define POLLPRI     0x0002      /* OOB/Urgent readable data      */