Update gtk-vnc with all the latest MinGW patches and latest Gnulib.
[fedora-mingw.git] / gtk-vnc / gtk-vnc-02-ioctl.patch
diff --git a/gtk-vnc/gtk-vnc-02-ioctl.patch b/gtk-vnc/gtk-vnc-02-ioctl.patch
new file mode 100644 (file)
index 0000000..77c73e8
--- /dev/null
@@ -0,0 +1,40 @@
+diff -r 47135c91cd9c src/gvnc.c
+--- a/src/gvnc.c       Thu Oct 09 11:23:09 2008 -0400
++++ b/src/gvnc.c       Wed Oct 29 14:51:26 2008 +0000
+@@ -2832,13 +2832,7 @@
+ static gboolean gvnc_set_nonblock(int fd)
+ {
+-#ifdef __MINGW32__
+-      unsigned long flags = 1;
+-      if (ioctlsocket(fd, FIONBIO, &flags) < 0) {
+-              GVNC_DEBUG ("Failed to set nonblocking flag\n");
+-              return FALSE;
+-      }
+-#else
++#ifndef WIN32
+       int flags;
+       if ((flags = fcntl(fd, F_GETFL)) < 0) {
+               GVNC_DEBUG ("Failed to fcntl()\n");
+@@ -2849,7 +2843,20 @@
+               GVNC_DEBUG ("Failed to fcntl()\n");
+               return FALSE;
+       }
+-#endif
++
++#else /* WIN32 */
++      unsigned long flag = 1;
++
++      /* This is actually Gnulib's replacement rpl_ioctl function.
++       * We can't call ioctlsocket directly in any case.
++       */
++      if (ioctl (fd, FIONBIO, (void *) &flag) == -1) {
++              GVNC_DEBUG ("Failed to set nonblocking flag, winsock error = %d",
++                          WSAGetLastError ());
++              return FALSE;
++      }
++#endif /* WIN32 */
++
+       return TRUE;
+ }