Replace with third version of Dan's patch, and up to date Gnulib.
authorRichard W.M. Jones <rjones@redhat.com>
Thu, 9 Oct 2008 14:53:05 +0000 (15:53 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Thu, 9 Oct 2008 14:53:05 +0000 (15:53 +0100)
gtk-vnc/gtk-vnc-0.3.7-mingw32-dan2.patch [deleted file]
gtk-vnc/gtk-vnc-0.3.7-mingw32-dan3.patch [new file with mode: 0644]
gtk-vnc/gtk-vnc-0.3.7-mingw32-gnulib-files.patch
gtk-vnc/mingw32-gtk-vnc.spec

diff --git a/gtk-vnc/gtk-vnc-0.3.7-mingw32-dan2.patch b/gtk-vnc/gtk-vnc-0.3.7-mingw32-dan2.patch
deleted file mode 100644 (file)
index 3383fe9..0000000
+++ /dev/null
@@ -1,3351 +0,0 @@
-diff -urN gtk-vnc-0.3.7/bootstrap gtk-vnc-0.3.7.mingw/bootstrap
---- gtk-vnc-0.3.7/bootstrap    1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.mingw/bootstrap      2008-10-09 12:19:03.000000000 +0100
-@@ -0,0 +1,84 @@
-+#!/bin/sh
-+# Run this after autogen.sh, to pull in all of the gnulib-related bits.
-+# It's important to run *after* autogen.sh, since it updates some of
-+# the same files autogen.sh does, yet those from gnulib are newer,
-+# and match the tests.  So if a gnulib bug has been fixed since the
-+# snapshot taken for whatever gettext release you're using, yet you
-+# run "make check" against the wrong version, the corresponding unit
-+# test in gl-tests/ may well fail.
-+
-+usage() {
-+  echo >&2 "\
-+Usage: $0 [OPTION]...
-+Bootstrap this package from the checked-out sources.
-+
-+Options:
-+ --gnulib-srcdir=DIRNAME  Specify the local directory where gnulib
-+                          sources reside.  Use this if you already
-+                          have gnulib sources on your machine, and
-+                          do not want to waste your bandwidth downloading
-+                          them again.
-+
-+If the file bootstrap.conf exists in the current working directory, its
-+contents are read as shell variables to configure the bootstrap.
-+
-+Running without arguments will suffice in most cases.
-+"
-+}
-+
-+for option
-+do
-+  case $option in
-+  --help)
-+    usage
-+    exit;;
-+  --gnulib-srcdir=*)
-+    GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
-+  *)
-+    echo >&2 "$0: $option: unknown option"
-+    exit 1;;
-+  esac
-+done
-+
-+cleanup_gnulib() {
-+  st=$?
-+  rm -fr .gnulib
-+  exit $st
-+}
-+
-+case ${GNULIB_SRCDIR--} in
-+-)
-+  if [ ! -d .gnulib ]; then
-+    echo "$0: getting gnulib files..."
-+
-+    trap cleanup_gnulib 1 2 13 15
-+
-+    git clone --depth 1 git://git.sv.gnu.org/gnulib .gnulib ||
-+      cleanup_gnulib
-+
-+    trap - 1 2 13 15
-+  fi
-+  GNULIB_SRCDIR=.gnulib
-+esac
-+
-+gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
-+<$gnulib_tool || exit
-+
-+modules='
-+getaddrinfo
-+vc-list-files
-+'
-+
-+# Tell gnulib to:
-+#   require LGPLv2+
-+#   put *.m4 files in new gnulib/m4/ dir
-+#   put *.[ch] files in new gnulib/lib/ dir.
-+
-+$gnulib_tool                  \
-+  --lgpl=2                    \
-+  --with-tests                        \
-+  --m4-base=gnulib/m4         \
-+  --source-base=gnulib/lib    \
-+  --tests-base=gnulib/tests   \
-+  --import $modules
-+
-diff -urN gtk-vnc-0.3.7/configure.ac gtk-vnc-0.3.7.mingw/configure.ac
---- gtk-vnc-0.3.7/configure.ac 2008-09-05 13:32:15.000000000 +0100
-+++ gtk-vnc-0.3.7.mingw/configure.ac   2008-10-09 12:19:03.000000000 +0100
-@@ -23,15 +23,29 @@
- AC_CONFIG_HEADERS([config.h:config.hin])
--
- AC_CANONICAL_TARGET
- AM_INIT_AUTOMAKE(gtk-vnc, 0.3.7)
-+
-+dnl gl_INIT uses m4_foreach_w, yet that is not defined in autoconf-2.59.
-+dnl In order to accommodate developers with such old tools, here's a
-+dnl replacement definition.
-+m4_ifndef([m4_foreach_w],
-+  [m4_define([m4_foreach_w],
-+    [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])])
-+
-+gl_EARLY
-+gl_INIT
-+
- AC_PROG_CC_STDC
- AM_PROG_CC_C_O
-+AC_LIBTOOL_WIN32_DLL
-+
- AC_PROG_LIBTOOL
-+AC_CHECK_HEADERS([pwd.h winsock2.h])
-+
- AC_ARG_WITH(python,
- [  --with-python           build python bindings],
- [case "${withval}" in
-@@ -234,6 +248,8 @@
- AC_CONFIG_FILES(
-   Makefile
-+  gnulib/lib/Makefile
-+  gnulib/tests/Makefile
-   src/Makefile
-   examples/Makefile
-   plugin/Makefile
-diff -urN gtk-vnc-0.3.7/Makefile.am gtk-vnc-0.3.7.mingw/Makefile.am
---- gtk-vnc-0.3.7/Makefile.am  2008-09-05 13:32:15.000000000 +0100
-+++ gtk-vnc-0.3.7.mingw/Makefile.am    2008-10-09 12:19:01.000000000 +0100
-@@ -1,5 +1,9 @@
--SUBDIRS = src examples plugin
-+SUBDIRS = gnulib/lib src examples plugin gnulib/tests
-+
-+ACLOCAL_AMFLAGS = -I gnulib/m4
-+
-+
- pkgconfig_DATA = @PACKAGE@-1.0.pc
- pkgconfigdir = $(libdir)/pkgconfig
-diff -urN gtk-vnc-0.3.7/src/continuation.c gtk-vnc-0.3.7.mingw/src/continuation.c
---- gtk-vnc-0.3.7/src/continuation.c   2008-09-05 13:32:16.000000000 +0100
-+++ gtk-vnc-0.3.7.mingw/src/continuation.c     2008-10-09 12:19:03.000000000 +0100
-@@ -8,6 +8,8 @@
-  *  GTK VNC Widget
-  */
-+#include <config.h>
-+
- #include "continuation.h"
- /*
-diff -urN gtk-vnc-0.3.7/src/coroutine_gthread.c gtk-vnc-0.3.7.mingw/src/coroutine_gthread.c
---- gtk-vnc-0.3.7/src/coroutine_gthread.c      2008-09-05 13:32:16.000000000 +0100
-+++ gtk-vnc-0.3.7.mingw/src/coroutine_gthread.c        2008-10-09 12:19:03.000000000 +0100
-@@ -8,6 +8,8 @@
-  *  GTK VNC Widget
-  */
-+#include <config.h>
-+
- #include "coroutine.h"
- #include <stdio.h>
- #include <stdlib.h>
-@@ -17,13 +19,24 @@
- static struct coroutine *current;
- static struct coroutine leader;
-+#if 0
-+#define CO_DEBUG(OP) fprintf(stderr, "%s %p %s %d\n", OP, g_thread_self(), __FUNCTION__, __LINE__)
-+#else
-+#define CO_DEBUG(OP)
-+#endif
-+
- static void coroutine_system_init(void)
- {
--      if (!g_thread_supported())
-+      if (!g_thread_supported()) {
-+              CO_DEBUG("INIT");
-               g_thread_init(NULL);
-+      }
-+
-       run_cond = g_cond_new();
-       run_lock = g_mutex_new();
-+      CO_DEBUG("LOCK");
-+      g_mutex_lock(run_lock);
-       /* The thread that creates the first coroutine is the system coroutine
-        * so let's fill out a structure for it */
-@@ -42,17 +55,22 @@
- static gpointer coroutine_thread(gpointer opaque)
- {
-       struct coroutine *co = opaque;
--
-+      CO_DEBUG("LOCK");
-       g_mutex_lock(run_lock);
--      while (!co->runnable)
-+      while (!co->runnable) {
-+              CO_DEBUG("WAIT");
-               g_cond_wait(run_cond, run_lock);
-+      }
-+      CO_DEBUG("RUNNABLE");
-       current = co;
-       co->data = co->entry(co->data);
-       co->exited = 1;
-       co->caller->runnable = TRUE;
-+      CO_DEBUG("BROADCAST");
-       g_cond_broadcast(run_cond);
-+      CO_DEBUG("UNLOCK");
-       g_mutex_unlock(run_lock);
-       return NULL;
-@@ -62,7 +80,8 @@
- {
-       if (run_cond == NULL)
-               coroutine_system_init();
--      
-+
-+      CO_DEBUG("NEW");
-       co->thread = g_thread_create_full(coroutine_thread, co, co->stack_size,
-                                         FALSE, TRUE,
-                                         G_THREAD_PRIORITY_NORMAL,
-@@ -88,15 +107,19 @@
-       to->runnable = TRUE;
-       to->data = arg;
-       to->caller = from;
-+      CO_DEBUG("BROADCAST");
-       g_cond_broadcast(run_cond);
-+      CO_DEBUG("UNLOCK");
-       g_mutex_unlock(run_lock);
--
-+      CO_DEBUG("LOCK");
-       g_mutex_lock(run_lock);
--      while (!from->runnable)
-+      while (!from->runnable) {
-+              CO_DEBUG("WAIT");
-               g_cond_wait(run_cond, run_lock);
--
-+      }
-       current = from;
-+      CO_DEBUG("SWAPPED");
-       return from->data;
- }
-@@ -111,6 +134,7 @@
-               fprintf(stderr, "Co-routine is re-entering itself\n");
-               abort();
-       }
-+      CO_DEBUG("SWAP");
-       return coroutine_swap(coroutine_self(), to, arg);
- }
-@@ -121,6 +145,8 @@
-               fprintf(stderr, "Co-routine is yielding to no one\n");
-               abort();
-       }
-+
-+      CO_DEBUG("SWAP");
-       coroutine_self()->caller = NULL;
-       return coroutine_swap(coroutine_self(), to, arg);
- }
-diff -urN gtk-vnc-0.3.7/src/coroutine_ucontext.c gtk-vnc-0.3.7.mingw/src/coroutine_ucontext.c
---- gtk-vnc-0.3.7/src/coroutine_ucontext.c     2008-09-05 13:32:16.000000000 +0100
-+++ gtk-vnc-0.3.7.mingw/src/coroutine_ucontext.c       2008-10-09 12:19:03.000000000 +0100
-@@ -8,6 +8,8 @@
-  *  GTK VNC Widget
-  */
-+#include <config.h>
-+
- #include <sys/types.h>
- #include <sys/mman.h>
- #include <stdio.h>
-diff -urN gtk-vnc-0.3.7/src/gvnc.c gtk-vnc-0.3.7.mingw/src/gvnc.c
---- gtk-vnc-0.3.7/src/gvnc.c   2008-09-05 13:32:16.000000000 +0100
-+++ gtk-vnc-0.3.7.mingw/src/gvnc.c     2008-10-09 12:19:03.000000000 +0100
-@@ -8,13 +8,10 @@
-  *  GTK VNC Widget
-  */
--#include "gvnc.h"
-+#include <config.h>
--#include <sys/socket.h>
--#include <netinet/in.h>
--#include <arpa/inet.h>
-+#include "gvnc.h"
--#include <netdb.h>
- #include <string.h>
- #include <unistd.h>
- #include <stdio.h>
-@@ -40,6 +37,15 @@
- #include <gdk/gdkkeysyms.h>
- #include "vnc_keycodes.h"
-+#include "socketcompat.h"
-+#include "getaddrinfo.h"
-+
-+/* AI_ADDRCONFIG is missing on some systems and gnulib won't provide it
-+   even if its emulated getaddrinfo() for us . */
-+#ifndef AI_ADDRCONFIG
-+# define AI_ADDRCONFIG 0
-+#endif
-+
- struct wait_queue
- {
-@@ -185,7 +191,6 @@
-       g_io_add_watch(channel, cond | G_IO_HUP | G_IO_ERR | G_IO_NVAL, g_io_wait_helper, coroutine_self());
-       ret = coroutine_yield(NULL);
--
-       return *ret;
- }
-@@ -321,10 +326,8 @@
-                       /* inflate as much as possible */
-                       err = inflate(gvnc->strm, Z_SYNC_FLUSH);
--                      if (err != Z_OK) {
--                              errno = EIO;
--                              return -1;
--                      }
-+                      if (err != Z_OK)
-+                              return -EIO;
-                       gvnc->uncompressed_length = (uint8_t *)gvnc->strm->next_out - gvnc->uncompressed_buffer;
-                       gvnc->compressed_length -= (uint8_t *)gvnc->strm->next_in - gvnc->compressed_buffer;
-@@ -344,7 +347,7 @@
-       size_t offset = 0;
-       if (gvnc->has_error) return -EINVAL;
--      
-+
-       while (offset < len) {
-               size_t tmp;
-@@ -352,10 +355,10 @@
-                * so we must by-pass it */
-               if (gvnc_use_compression(gvnc)) {
-                       int ret = gvnc_zread(gvnc, data + offset, len);
--                      if (ret == -1) {
-+                      if (ret < 0) {
-                               GVNC_DEBUG("Closing the connection: gvnc_read() - gvnc_zread() failed\n");
-                               gvnc->has_error = TRUE;
--                              return -errno;
-+                              return ret;
-                       }
-                       offset += ret;
-                       continue;
-@@ -366,17 +369,19 @@
-                               ret = gnutls_read(gvnc->tls_session, gvnc->read_buffer, 4096);
-                               if (ret < 0) {
-                                       if (ret == GNUTLS_E_AGAIN)
--                                              errno = EAGAIN;
-+                                              ret = -EAGAIN;
-                                       else
--                                              errno = EIO;
--                                      ret = -1;
-+                                              ret = -EIO;
-                               }
--                      } else
--                              ret = read(fd, gvnc->read_buffer, 4096);
-+                      } else {
-+                              ret = recv(fd, gvnc->read_buffer, 4096, 0);
-+                              if (ret < 0)
-+                                      ret = socket_errno() * -1;
-+                      }
--                      if (ret == -1) {
--                              switch (errno) {
--                              case EAGAIN:
-+                      if (ret < 0) {
-+                              switch (ret * -1) {
-+                              case EWOULDBLOCK:
-                                       if (gvnc->wait_interruptable) {
-                                               if (!g_io_wait_interruptable(&gvnc->wait,
-                                                                            gvnc->channel, G_IO_IN))
-@@ -386,9 +391,9 @@
-                               case EINTR:
-                                       continue;
-                               default:
--                                      GVNC_DEBUG("Closing the connection: gvnc_read() - ret=-1\n");
-+                                      GVNC_DEBUG("Closing the connection: gvnc_read() - ret=%d\n", ret);
-                                       gvnc->has_error = TRUE;
--                                      return -errno;
-+                                      return ret;
-                               }
-                       }
-                       if (ret == 0) {
-@@ -425,23 +430,25 @@
-                                          gvnc->write_offset-offset);
-                       if (ret < 0) {
-                               if (ret == GNUTLS_E_AGAIN)
--                                      errno = EAGAIN;
-+                                      ret = -EAGAIN;
-                               else
--                                      errno = EIO;
--                              ret = -1;
-+                                      ret = -EIO;
-                       }
--              } else
--                      ret = write(fd,
--                                  gvnc->write_buffer+offset,
--                                  gvnc->write_offset-offset);
--              if (ret == -1) {
--                      switch (errno) {
--                      case EAGAIN:
-+              } else {
-+                      ret = send(fd,
-+                                 gvnc->write_buffer+offset,
-+                                 gvnc->write_offset-offset, 0);
-+                      if (ret < 0)
-+                              ret = socket_errno() * -1;
-+              }
-+              if (ret < 0) {
-+                      switch (ret * -1) {
-+                      case EWOULDBLOCK:
-                               g_io_wait(gvnc->channel, G_IO_OUT);
-                       case EINTR:
-                               continue;
-                       default:
--                              GVNC_DEBUG("Closing the connection: gvnc_flush\n");
-+                              GVNC_DEBUG("Closing the connection: gvnc_flush %d\n", ret);
-                               gvnc->has_error = TRUE;
-                               return;
-                       }
-@@ -488,7 +495,7 @@
-  retry:
-       ret = write(fd, data, len);
-       if (ret < 0) {
--              if (errno == EINTR)
-+              if (socket_errno() == EINTR)
-                       goto retry;
-               return -1;
-       }
-@@ -506,7 +513,7 @@
-  retry:
-       ret = read(fd, data, len);
-       if (ret < 0) {
--              if (errno == EINTR)
-+              if (socket_errno() == EINTR)
-                       goto retry;
-               return -1;
-       }
-@@ -2802,12 +2809,12 @@
-       if (gvnc_has_error(gvnc))
-               return FALSE;
--      if (!gvnc->fmt.true_color_flag && gvnc->ops.get_preferred_pixel_format)
-+      if (!gvnc->fmt.true_color_flag && gvnc->ops.get_preferred_pixel_format) {
-               if (gvnc->ops.get_preferred_pixel_format(gvnc->ops_data, &gvnc->fmt))
-                       gvnc_set_pixel_format(gvnc, &gvnc->fmt);
-               else
-                       goto fail;
--
-+      }
-       memset(&gvnc->strm, 0, sizeof(gvnc->strm));
-       /* FIXME what level? */
-       for (i = 0; i < 5; i++)
-@@ -2822,15 +2829,16 @@
-       return !gvnc_has_error(gvnc);
- }
--gboolean gvnc_open_fd(struct gvnc *gvnc, int fd)
-+static gboolean gvnc_set_nonblock(int fd)
- {
--      int flags;
--      if (gvnc_is_open(gvnc)) {
--              GVNC_DEBUG ("Error: already connected?\n");
-+#ifdef __MINGW32__
-+      unsigned long flags = 1;
-+      if (ioctlsocket(fd, FIONBIO, &flags) < 0) {
-+              GVNC_DEBUG ("Failed to set nonblocking flag\n");
-               return FALSE;
-       }
--
--      GVNC_DEBUG("Connecting to FD %d\n", fd);
-+#else
-+      int flags;
-       if ((flags = fcntl(fd, F_GETFL)) < 0) {
-               GVNC_DEBUG ("Failed to fcntl()\n");
-               return FALSE;
-@@ -2840,6 +2848,21 @@
-               GVNC_DEBUG ("Failed to fcntl()\n");
-               return FALSE;
-       }
-+#endif
-+      return TRUE;
-+}
-+
-+gboolean gvnc_open_fd(struct gvnc *gvnc, int fd)
-+{
-+      if (gvnc_is_open(gvnc)) {
-+              GVNC_DEBUG ("Error: already connected?\n");
-+              return FALSE;
-+      }
-+
-+      GVNC_DEBUG("Connecting to FD %d\n", fd);
-+
-+      if (!gvnc_set_nonblock(fd))
-+              return FALSE;
-       if (!(gvnc->channel = g_io_channel_unix_new(fd))) {
-               GVNC_DEBUG ("Failed to g_io_channel_unix_new()\n");
-@@ -2873,7 +2896,7 @@
-         runp = ai;
-         while (runp != NULL) {
--                int flags, fd;
-+                int fd;
-                 GIOChannel *chan;
-               if ((fd = socket(runp->ai_family, runp->ai_socktype,
-@@ -2883,17 +2906,8 @@
-               }
-                 GVNC_DEBUG("Trying socket %d\n", fd);
--                if ((flags = fcntl(fd, F_GETFL)) < 0) {
--                        close(fd);
--                        GVNC_DEBUG ("Failed to fcntl()\n");
--                        break;
--                }
--                flags |= O_NONBLOCK;
--                if (fcntl(fd, F_SETFL, flags) < 0) {
--                        close(fd);
--                        GVNC_DEBUG ("Failed to fcntl()\n");
--                        break;
--                }
-+              if (!gvnc_set_nonblock(fd))
-+                      break;
-                 if (!(chan = g_io_channel_unix_new(fd))) {
-                         close(fd);
-@@ -2904,21 +2918,22 @@
-         reconnect:
-                 /* FIXME: Better handle EINPROGRESS/EISCONN return values,
-                    as explained in connect(2) man page */
--                if ( (connect(fd, runp->ai_addr, runp->ai_addrlen) == 0) || errno == EISCONN) {
-+                if ((connect(fd, runp->ai_addr, runp->ai_addrlen) == 0) ||
-+                  socket_errno() == EISCONN) {
-                         gvnc->channel = chan;
-                         gvnc->fd = fd;
-                         freeaddrinfo(ai);
-                         return !gvnc_has_error(gvnc);
-                 }
--
--                if (errno == EINPROGRESS) {
-+                if (socket_errno() == EINPROGRESS ||
-+                    socket_errno() == EWOULDBLOCK) {
-                         g_io_wait(chan, G_IO_OUT|G_IO_ERR|G_IO_HUP);
-                         goto reconnect;
--                } else if (errno != ECONNREFUSED &&
--                           errno != EHOSTUNREACH) {
-+                } else if (socket_errno() != ECONNREFUSED &&
-+                           socket_errno() != EHOSTUNREACH) {
-                         g_io_channel_unref(chan);
-                         close(fd);
--                        GVNC_DEBUG ("Failed with errno = %d\n", errno);
-+                        GVNC_DEBUG ("Failed with errno = %d\n", socket_errno());
-                         break;
-                 }
-                 close(fd);
-diff -urN gtk-vnc-0.3.7/src/Makefile.am gtk-vnc-0.3.7.mingw/src/Makefile.am
---- gtk-vnc-0.3.7/src/Makefile.am      2008-09-05 13:32:15.000000000 +0100
-+++ gtk-vnc-0.3.7.mingw/src/Makefile.am        2008-10-09 12:19:03.000000000 +0100
-@@ -4,13 +4,15 @@
- lib_LTLIBRARIES = libgtk-vnc-1.0.la
- libgtk_vnc_1_0_la_LIBADD = @GTK_LIBS@ @GTKGLEXT_LIBS@ @GNUTLS_LIBS@ \
--                         @GTHREAD_LIBS@
-+                         @GTHREAD_LIBS@ \
-+                           ../gnulib/lib/libgnu.la
- libgtk_vnc_1_0_la_CFLAGS = @GTK_CFLAGS@ @GTKGLEXT_CFLAGS@ @GNUTLS_CFLAGS@ \
-                          @GTHREAD_CFLAGS@ @WARNING_CFLAGS@ \
-                          -DSYSCONFDIR=\""$(sysconfdir)"\" \
--                           -DG_LOG_DOMAIN=\"gtk-vnc\"
-+                           -DG_LOG_DOMAIN=\"gtk-vnc\" \
-+                           -I$(top_srcdir)gnulib/lib -I../gnulib/lib
- libgtk_vnc_1_0_la_LDFLAGS = -Wl, @LD_VERSION_SCRIPT_SUPPORT@ \
--                            -version-info 0:1:0
-+                            -version-info 0:1:0 -no-undefined
- gtk_vnc_includedir = $(includedir)/gtk-vnc-1.0/
- gtk_vnc_include_HEADERS = vncdisplay.h
-@@ -22,7 +24,7 @@
-       vncdisplay.h vncdisplay.c \
-         vncmarshal.h vncmarshal.c \
-       x_keymap.h x_keymap.c vnc_keycodes.h \
--      utils.h
-+      utils.h socketcompat.h
- if WITH_UCONTEXT
- libgtk_vnc_1_0_la_SOURCES += continuation.h continuation.c coroutine_ucontext.c
-diff -urN gtk-vnc-0.3.7/src/socketcompat.h gtk-vnc-0.3.7.mingw/src/socketcompat.h
---- gtk-vnc-0.3.7/src/socketcompat.h   1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.mingw/src/socketcompat.h     2008-10-09 12:19:03.000000000 +0100
-@@ -0,0 +1,64 @@
-+/*
-+ * socketcompat.h: Socket compatibility for Windows, making it slightly
-+ * less painful to use.
-+ *
-+ * Use this header under the following circumstances:
-+ * (a) Instead of including any of: <net/if.h>, <netinet/in.h>,
-+ *     <sys/socket.h>, <netdb.h>, <netinet/tcp.h>, AND
-+ * (b) The file will be part of what is built on Windows (basically
-+ *     just remote client stuff).
-+ *
-+ * You need to use socket_errno() instead of errno to get socket
-+ * errors.
-+ *
-+ * Copyright (C) 2008 Red Hat, Inc.
-+ *
-+ * See COPYING.LIB for the License of this software
-+ *
-+ * Richard W.M. Jones <rjones@redhat.com>
-+ */
-+
-+#ifndef __SOCKETCOMPAT_H__
-+#define __SOCKETCOMPAT_H__
-+
-+#include <config.h>
-+
-+#include <errno.h>
-+
-+#ifndef HAVE_WINSOCK2_H               /* Unix & Cygwin. */
-+
-+#include <sys/socket.h>
-+#include <sys/un.h>
-+#include <net/if.h>
-+#include <netinet/in.h>
-+#include <netinet/tcp.h>
-+
-+static inline int
-+socket_errno (void)
-+{
-+  return errno;
-+}
-+
-+#else                           /* MinGW & Win32 */
-+
-+#include <winsock2.h>
-+
-+/* Socket functions in Windows don't set errno.  Instead of using errno
-+ * to test for socket errors, call this function to get the errno.
-+ */
-+static inline int
-+socket_errno (void)
-+{
-+  return WSAGetLastError ();
-+}
-+
-+/* Compatibility. */
-+#define EWOULDBLOCK             WSAEWOULDBLOCK
-+#define ECONNREFUSED            WSAECONNREFUSED
-+#define EINPROGRESS             WSAEINPROGRESS
-+#define EHOSTUNREACH            WSAEHOSTUNREACH
-+#define EISCONN                 WSAEISCONN
-+
-+#endif /* HAVE_WINSOCK2_H */
-+
-+#endif /* __WINSOCKWRAPPER_H__ */
-diff -urN gtk-vnc-0.3.7/src/vncdisplay.c gtk-vnc-0.3.7.mingw/src/vncdisplay.c
---- gtk-vnc-0.3.7/src/vncdisplay.c     2008-10-09 12:16:42.000000000 +0100
-+++ gtk-vnc-0.3.7.mingw/src/vncdisplay.c       2008-10-09 12:19:03.000000000 +0100
-@@ -8,6 +8,8 @@
-  *  GTK VNC Widget
-  */
-+#include <config.h>
-+
- #include "vncdisplay.h"
- #include "coroutine.h"
- #include "gvnc.h"
-@@ -24,7 +26,9 @@
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
-+#ifdef HAVE_PWD_H
- #include <pwd.h>
-+#endif
- #if WITH_GTKGLEXT
- #include <gtk/gtkgl.h>
-@@ -2191,33 +2195,44 @@
- static int vnc_display_set_x509_credential(VncDisplay *obj, const char *name)
- {
--      char sysdir[PATH_MAX], userdir[PATH_MAX];
--      struct passwd *pw;
-       char file[PATH_MAX];
-+      char sysdir[PATH_MAX];
-+#ifndef __MINGW32__
-+      char userdir[PATH_MAX];
-+      struct passwd *pw;
-       char *dirs[] = { sysdir, userdir };
-+#else
-+      char *dirs[] = { sysdir };
-+#endif
-       strncpy(sysdir, SYSCONFDIR "/pki", PATH_MAX-1);
-       sysdir[PATH_MAX-1] = '\0';
-+#ifndef __MINGW32__
-       if (!(pw = getpwuid(getuid())))
-               return TRUE;
-       snprintf(userdir, PATH_MAX-1, "%s/.pki", pw->pw_dir);
-       userdir[PATH_MAX-1] = '\0';
-+#endif
--      if (vnc_display_best_path(file, PATH_MAX, "CA", "cacert.pem", dirs, 2) < 0)
-+      if (vnc_display_best_path(file, PATH_MAX, "CA", "cacert.pem",
-+                                dirs, sizeof(dirs)/sizeof(dirs[0])) < 0)
-               return TRUE;
-       gvnc_set_credential_x509_cacert(obj->priv->gvnc, file);
-       /* Don't mind failures of CRL */
--      if (vnc_display_best_path(file, PATH_MAX, "CA", "cacrl.pem", dirs, 2) == 0)
-+      if (vnc_display_best_path(file, PATH_MAX, "CA", "cacrl.pem",
-+                                dirs, sizeof(dirs)/sizeof(dirs[0])) == 0)
-               gvnc_set_credential_x509_cacert(obj->priv->gvnc, file);
-       /* Set client key & cert if we have them. Server will reject auth
-        * if it decides it requires them*/
--      if (vnc_display_best_path(file, PATH_MAX, name, "private/clientkey.pem", dirs, 2) == 0)
-+      if (vnc_display_best_path(file, PATH_MAX, name, "private/clientkey.pem",
-+                                dirs, sizeof(dirs)/sizeof(dirs[0])) == 0)
-               gvnc_set_credential_x509_key(obj->priv->gvnc, file);
--      if (vnc_display_best_path(file, PATH_MAX, name, "clientcert.pem", dirs, 2) == 0)
-+      if (vnc_display_best_path(file, PATH_MAX, name, "clientcert.pem",
-+                                dirs, sizeof(dirs)/sizeof(dirs[0])) == 0)
-               gvnc_set_credential_x509_cert(obj->priv->gvnc, file);
-       return FALSE;
-diff -urN gtk-vnc-0.3.7/src/vncdisplay.c.orig gtk-vnc-0.3.7.mingw/src/vncdisplay.c.orig
---- gtk-vnc-0.3.7/src/vncdisplay.c.orig        2008-09-05 13:32:16.000000000 +0100
-+++ gtk-vnc-0.3.7.mingw/src/vncdisplay.c.orig  1970-01-01 01:00:00.000000000 +0100
-@@ -1,2491 +0,0 @@
--/*
-- * Copyright (C) 2006  Anthony Liguori <anthony@codemonkey.ws>
-- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU Lesser General Public License version 2 or
-- * later as published by the Free Software Foundation.
-- *
-- *  GTK VNC Widget
-- */
--
--#include "vncdisplay.h"
--#include "coroutine.h"
--#include "gvnc.h"
--#include "utils.h"
--#include "vncmarshal.h"
--#include "config.h"
--#include "x_keymap.h"
--
--#include <gtk/gtk.h>
--#include <string.h>
--#include <stdlib.h>
--#include <gdk/gdkkeysyms.h>
--#include <gdk-pixbuf/gdk-pixbuf.h>
--#include <sys/types.h>
--#include <sys/stat.h>
--#include <unistd.h>
--#include <pwd.h>
--
--#if WITH_GTKGLEXT
--#include <gtk/gtkgl.h>
--#include <GL/gl.h>
--#endif
--
--#define VNC_DISPLAY_GET_PRIVATE(obj) \
--      (G_TYPE_INSTANCE_GET_PRIVATE((obj), VNC_TYPE_DISPLAY, VncDisplayPrivate))
--
--struct _VncDisplayPrivate
--{
--      int fd;
--      char *host;
--      char *port;
--      GdkGC *gc;
--      GdkImage *image;
--      GdkCursor *null_cursor;
--      GdkCursor *remote_cursor;
--
--#if WITH_GTKGLEXT
--      int gl_enabled;
--      GdkGLConfig *gl_config;
--      GdkGLDrawable *gl_drawable;
--      GdkGLContext *gl_context;
--      uint8_t *gl_tex_data;
--      int gl_texture_width;
--      int gl_texture_height;
--      int gl_width;
--      int gl_height;
--      GLuint gl_tex;
--#endif
--
--      struct gvnc_framebuffer fb;
--      struct coroutine coroutine;
--      struct gvnc *gvnc;
--
--      guint open_id;
--
--      gboolean in_pointer_grab;
--      gboolean in_keyboard_grab;
--
--      guint down_keyval[16];
--      guint down_scancode[16];
--
--      int button_mask;
--      int last_x;
--      int last_y;
--
--      gboolean absolute;
--
--      gboolean grab_pointer;
--      gboolean grab_keyboard;
--      gboolean local_pointer;
--      gboolean read_only;
--      gboolean allow_lossy;
--      gboolean allow_scaling;
--      gboolean shared_flag;
--      gboolean force_size;
--
--      GSList *preferable_auths;
--};
--
--/* Delayed signal emission.
-- *
-- * We want signals to be delivered in the system coroutine.  This helps avoid
-- * confusing applications.  This is particularly important when using
-- * GThread based coroutines since GTK gets very upset if a signal handler is
-- * run in a different thread from the main loop if that signal handler isn't
-- * written to use explicit locking.
-- */
--struct signal_data
--{
--      VncDisplay *obj;
--      struct coroutine *caller;
--
--      int signum;
--      GValueArray *cred_list;
--      int width;
--      int height;
--      const char *msg;
--      unsigned int auth_type;
--      GString *str;
--};
--
--G_DEFINE_TYPE(VncDisplay, vnc_display, GTK_TYPE_DRAWING_AREA)
--
--/* Properties */
--enum
--{
--  PROP_0,
--  PROP_POINTER_LOCAL,
--  PROP_POINTER_GRAB,
--  PROP_KEYBOARD_GRAB,
--  PROP_READ_ONLY,
--  PROP_WIDTH,
--  PROP_HEIGHT,
--  PROP_NAME,
--  PROP_LOSSY_ENCODING,
--  PROP_SCALING,
--  PROP_SHARED_FLAG,
--  PROP_FORCE_SIZE
--};
--
--/* Signals */
--typedef enum
--{
--      VNC_POINTER_GRAB,
--      VNC_POINTER_UNGRAB,
--      VNC_KEYBOARD_GRAB,
--      VNC_KEYBOARD_UNGRAB,
--
--      VNC_CONNECTED,
--      VNC_INITIALIZED,
--      VNC_DISCONNECTED,
--      VNC_AUTH_CREDENTIAL,
--
--      VNC_DESKTOP_RESIZE,
--
--      VNC_AUTH_FAILURE,
--      VNC_AUTH_UNSUPPORTED,
--
--      VNC_SERVER_CUT_TEXT,
--      VNC_BELL,
--
--      LAST_SIGNAL
--} vnc_display_signals;
--
--static guint signals[LAST_SIGNAL] = { 0, 0, 0, 0,
--                                    0, 0, 0, 0,
--                                    0, 0, 0, 0, 0,};
--static GParamSpec *signalCredParam;
--gboolean debug_enabled = FALSE;
--
--static const GOptionEntry gtk_vnc_args[] =
--{
--  { "gtk-vnc-debug", 0, 0, G_OPTION_ARG_NONE, &debug_enabled, "Enables debug output", 0 },
--  { NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, 0 }
--};
--
--
--static void
--vnc_display_get_property (GObject    *object,
--                        guint       prop_id,
--                        GValue     *value,
--                        GParamSpec *pspec)
--{
--  VncDisplay *vnc = VNC_DISPLAY (object);
--
--  switch (prop_id)
--    {
--      case PROP_POINTER_LOCAL:
--        g_value_set_boolean (value, vnc->priv->local_pointer);
--      break;
--      case PROP_POINTER_GRAB:
--        g_value_set_boolean (value, vnc->priv->grab_pointer);
--      break;
--      case PROP_KEYBOARD_GRAB:
--        g_value_set_boolean (value, vnc->priv->grab_keyboard);
--      break;
--      case PROP_READ_ONLY:
--        g_value_set_boolean (value, vnc->priv->read_only);
--      break;
--      case PROP_WIDTH:
--        g_value_set_int (value, vnc_display_get_width (vnc));
--      break;
--      case PROP_HEIGHT:
--        g_value_set_int (value, vnc_display_get_height (vnc));
--      break;
--      case PROP_NAME:
--        g_value_set_string (value, vnc_display_get_name (vnc));
--      break;
--      case PROP_LOSSY_ENCODING:
--        g_value_set_boolean (value, vnc->priv->allow_lossy);
--      break;
--      case PROP_SCALING:
--        g_value_set_boolean (value, vnc->priv->allow_scaling);
--      break;
--      case PROP_SHARED_FLAG:
--        g_value_set_boolean (value, vnc->priv->shared_flag);
--      break;
--      case PROP_FORCE_SIZE:
--        g_value_set_boolean (value, vnc->priv->force_size);
--      break;
--      default:
--      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
--      break;                  
--    }
--}
--
--static void
--vnc_display_set_property (GObject      *object,
--                        guint         prop_id,
--                        const GValue *value,
--                        GParamSpec   *pspec)
--{
--  VncDisplay *vnc = VNC_DISPLAY (object);
--
--  switch (prop_id)
--    {
--      case PROP_POINTER_LOCAL:
--        vnc_display_set_pointer_local (vnc, g_value_get_boolean (value));
--        break;
--      case PROP_POINTER_GRAB:
--        vnc_display_set_pointer_grab (vnc, g_value_get_boolean (value));
--        break;
--      case PROP_KEYBOARD_GRAB:
--        vnc_display_set_keyboard_grab (vnc, g_value_get_boolean (value));
--        break;
--      case PROP_READ_ONLY:
--        vnc_display_set_read_only (vnc, g_value_get_boolean (value));
--        break;
--      case PROP_LOSSY_ENCODING:
--        vnc_display_set_lossy_encoding (vnc, g_value_get_boolean (value));
--        break;
--      case PROP_SCALING:
--        vnc_display_set_scaling (vnc, g_value_get_boolean (value));
--        break;
--      case PROP_SHARED_FLAG:
--        vnc_display_set_shared_flag (vnc, g_value_get_boolean (value));
--        break;
--      case PROP_FORCE_SIZE:
--        vnc_display_set_force_size (vnc, g_value_get_boolean (value));
--        break;
--      default:
--        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
--        break;                        
--    }
--}
--
--GtkWidget *vnc_display_new(void)
--{
--      return GTK_WIDGET(g_object_new(VNC_TYPE_DISPLAY, NULL));
--}
--
--static GdkCursor *create_null_cursor(void)
--{
--      GdkBitmap *image;
--      gchar data[4] = {0};
--      GdkColor fg = { 0, 0, 0, 0 };
--      GdkCursor *cursor;
--
--      image = gdk_bitmap_create_from_data(NULL, data, 1, 1);
--
--      cursor = gdk_cursor_new_from_pixmap(GDK_PIXMAP(image),
--                                          GDK_PIXMAP(image),
--                                          &fg, &fg, 0, 0);
--      gdk_bitmap_unref(image);
--
--      return cursor;
--}
--
--static gboolean expose_event(GtkWidget *widget, GdkEventExpose *expose)
--{
--      VncDisplay *obj = VNC_DISPLAY(widget);
--      VncDisplayPrivate *priv = obj->priv;
--      int x, y, w, h;
--      GdkRectangle drawn;
--      GdkRegion *clear, *copy;
--
--      GVNC_DEBUG("Expose %dx%d @ %d,%d\n",
--                 expose->area.x,
--                 expose->area.y,
--                 expose->area.width,
--                 expose->area.height);
--
--      if (priv->image == NULL) {
--#if WITH_GTKGLEXT
--              if (priv->gl_tex_data == NULL)
--#endif
--              {
--                      GdkGC *gc = gdk_gc_new(widget->window);
--                      gdk_draw_rectangle(widget->window, gc, TRUE,
--                                         expose->area.x, expose->area.y,
--                                         expose->area.width,
--                                         expose->area.height);
--                      g_object_unref(gc);
--                      return TRUE;
--              }
--      }
--
--#if WITH_GTKGLEXT
--      if (priv->gl_enabled) {
--              float rx, ry;
--              int wx = 0, wy = 0;
--              int ww = priv->gl_width, wh = priv->gl_height;
--              double scale_x, scale_y;
--
--              scale_x = (double)priv->gl_width / priv->fb.width;
--              scale_y = (double)priv->gl_height / priv->fb.height;
--
--              x = expose->area.x / scale_x;
--              y = expose->area.y / scale_y;
--              w = expose->area.width / scale_x;
--              h = expose->area.height / scale_y;
--
--              y -= 5;
--              h += 10;
--              if (y < 0)
--                      y = 0;
--
--              x -= 5;
--              w += 10;
--              if (x < 0)
--                      x = 0;
--
--              x = MIN(x, priv->fb.width);
--              y = MIN(y, priv->fb.height);
--              w = MIN(x + w, priv->fb.width);
--              h = MIN(y + h, priv->fb.height);
--              w -= x;
--              h -= y;
--
--              gdk_gl_drawable_gl_begin(priv->gl_drawable, priv->gl_context);
--              glBindTexture(GL_TEXTURE_2D, priv->gl_tex);
--              glPixelStorei(GL_UNPACK_ROW_LENGTH, priv->fb.width);
--              glTexSubImage2D(GL_TEXTURE_2D, 0,
--                              x, y, w, h,
--                              GL_BGRA_EXT,
--                              GL_UNSIGNED_BYTE,
--                              priv->gl_tex_data +
--                              y * 4 * priv->fb.width +
--                              x * 4);
--              rx = (float)priv->fb.width  / priv->gl_texture_width;
--              ry = (float)priv->fb.height / priv->gl_texture_height;
--              
--              glEnable(GL_TEXTURE_2D);
--              glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
--              glBegin(GL_QUADS);
--              glTexCoord2f(0,ry);  glVertex3f(wx, wy, 0);
--              glTexCoord2f(0,0);  glVertex3f(wx, wy+wh, 0);
--              glTexCoord2f(rx,0);  glVertex3f(wx+ww, wy+wh, 0);
--              glTexCoord2f(rx,ry);  glVertex3f(wx+ww, wy, 0);
--              glEnd();                
--              glDisable(GL_TEXTURE_2D);
--              glFlush();
--              gdk_gl_drawable_gl_end(priv->gl_drawable);
--      } else
--#endif
--      {
--              int mx = 0, my = 0;
--              int ww, wh;
--
--              gdk_drawable_get_size(widget->window, &ww, &wh);
--              if (ww > priv->fb.width)
--                      mx = (ww - priv->fb.width) / 2;
--              if (wh > priv->fb.height)
--                      my = (wh - priv->fb.height) / 2;
--
--              x = MIN(expose->area.x - mx, priv->fb.width);
--              y = MIN(expose->area.y - my, priv->fb.height);
--              w = MIN(expose->area.x + expose->area.width - mx, priv->fb.width);
--              h = MIN(expose->area.y + expose->area.height - my, priv->fb.height);
--              x = MAX(0, x);
--              y = MAX(0, y);
--              w = MAX(0, w);
--              h = MAX(0, h);
--
--              w -= x;
--              h -= y;
--
--              drawn.x = x + mx;
--              drawn.y = y + my;
--              drawn.width = w;
--              drawn.height = h;
--
--              clear = gdk_region_rectangle(&expose->area);
--              copy = gdk_region_rectangle(&drawn);
--              gdk_region_subtract(clear, copy);
--
--              gdk_gc_set_clip_region(priv->gc, copy);
--              gdk_draw_image(widget->window, priv->gc, priv->image,
--                             x, y, x + mx, y + my, w, h);
--
--              gdk_gc_set_clip_region(priv->gc, clear);
--              gdk_draw_rectangle(widget->window, priv->gc, TRUE, expose->area.x, expose->area.y,
--                                 expose->area.width, expose->area.height);
--
--              gdk_region_destroy(clear);
--              gdk_region_destroy(copy);
--      }
--
--      return TRUE;
--}
--
--static void do_keyboard_grab(VncDisplay *obj, gboolean quiet)
--{
--      VncDisplayPrivate *priv = obj->priv;
--
--      gdk_keyboard_grab(GTK_WIDGET(obj)->window,
--                        FALSE,
--                        GDK_CURRENT_TIME);
--      priv->in_keyboard_grab = TRUE;
--      if (!quiet)
--              g_signal_emit(obj, signals[VNC_KEYBOARD_GRAB], 0);
--}
--
--
--static void do_keyboard_ungrab(VncDisplay *obj, gboolean quiet)
--{
--      VncDisplayPrivate *priv = obj->priv;
--
--      gdk_keyboard_ungrab(GDK_CURRENT_TIME);
--      priv->in_keyboard_grab = FALSE;
--      if (!quiet)
--              g_signal_emit(obj, signals[VNC_KEYBOARD_UNGRAB], 0);
--}
--
--static void do_pointer_hide(VncDisplay *obj)
--{
--      VncDisplayPrivate *priv = obj->priv;
--      gdk_window_set_cursor(GTK_WIDGET(obj)->window,
--                            priv->remote_cursor ? priv->remote_cursor : priv->null_cursor);
--}
--
--static void do_pointer_show(VncDisplay *obj)
--{
--      VncDisplayPrivate *priv = obj->priv;
--      gdk_window_set_cursor(GTK_WIDGET(obj)->window,
--                            priv->remote_cursor);
--}
--
--static void do_pointer_grab(VncDisplay *obj, gboolean quiet)
--{
--      VncDisplayPrivate *priv = obj->priv;
--
--      /* If we're not already grabbing keyboard, grab it now */
--      if (!priv->grab_keyboard)
--              do_keyboard_grab(obj, quiet);
--
--      gdk_pointer_grab(GTK_WIDGET(obj)->window,
--                       TRUE,
--                       GDK_POINTER_MOTION_MASK |
--                       GDK_BUTTON_PRESS_MASK |
--                       GDK_BUTTON_RELEASE_MASK |
--                       GDK_BUTTON_MOTION_MASK |
--                       GDK_SCROLL_MASK,
--                       GTK_WIDGET(obj)->window,
--                       priv->remote_cursor ? priv->remote_cursor : priv->null_cursor,
--                       GDK_CURRENT_TIME);
--      priv->in_pointer_grab = TRUE;
--      if (!quiet)
--              g_signal_emit(obj, signals[VNC_POINTER_GRAB], 0);
--}
--
--static void do_pointer_ungrab(VncDisplay *obj, gboolean quiet)
--{
--      VncDisplayPrivate *priv = obj->priv;
--
--      /* If we grabbed keyboard upon pointer grab, then ungrab it now */
--      if (!priv->grab_keyboard)
--              do_keyboard_ungrab(obj, quiet);
--
--      gdk_pointer_ungrab(GDK_CURRENT_TIME);
--      priv->in_pointer_grab = FALSE;
--
--      if (priv->absolute)
--              do_pointer_hide(obj);
--
--      if (!quiet)
--              g_signal_emit(obj, signals[VNC_POINTER_UNGRAB], 0);
--}
--
--void vnc_display_force_grab(VncDisplay *obj, gboolean enable)
--{
--      if (enable)
--              do_pointer_grab(obj, FALSE);
--      else
--              do_pointer_ungrab(obj, FALSE);
--}
--
--static gboolean button_event(GtkWidget *widget, GdkEventButton *button)
--{
--      VncDisplayPrivate *priv = VNC_DISPLAY(widget)->priv;
--      int n;
--
--      if (priv->gvnc == NULL || !gvnc_is_initialized(priv->gvnc))
--              return FALSE;
--
--      if (priv->read_only)
--              return FALSE;
--
--      gtk_widget_grab_focus (widget);
--
--      if (priv->grab_pointer && !priv->absolute && !priv->in_pointer_grab &&
--          button->button == 1 && button->type == GDK_BUTTON_PRESS)
--              do_pointer_grab(VNC_DISPLAY(widget), FALSE);
--
--      n = 1 << (button->button - 1);
--      if (button->type == GDK_BUTTON_PRESS)
--              priv->button_mask |= n;
--      else if (button->type == GDK_BUTTON_RELEASE)
--              priv->button_mask &= ~n;
--
--      if (priv->absolute) {
--              gvnc_pointer_event(priv->gvnc, priv->button_mask,
--                                 priv->last_x, priv->last_y);
--      } else {
--              gvnc_pointer_event(priv->gvnc, priv->button_mask,
--                                 0x7FFF, 0x7FFF);
--      }
--
--      return TRUE;
--}
--
--static gboolean scroll_event(GtkWidget *widget, GdkEventScroll *scroll)
--{
--      VncDisplayPrivate *priv = VNC_DISPLAY(widget)->priv;
--      int mask;
--
--      if (priv->gvnc == NULL || !gvnc_is_initialized(priv->gvnc))
--              return FALSE;
--
--      if (priv->read_only)
--              return FALSE;
--
--      if (scroll->direction == GDK_SCROLL_UP)
--              mask = (1 << 3);
--      else if (scroll->direction == GDK_SCROLL_DOWN)
--              mask = (1 << 4);
--      else if (scroll->direction == GDK_SCROLL_LEFT)
--              mask = (1 << 5);
--      else if (scroll->direction == GDK_SCROLL_RIGHT)
--              mask = (1 << 6);
--      else
--              return FALSE;
--
--      if (priv->absolute) {
--              gvnc_pointer_event(priv->gvnc, priv->button_mask | mask,
--                                 priv->last_x, priv->last_y);
--              gvnc_pointer_event(priv->gvnc, priv->button_mask,
--                                 priv->last_x, priv->last_y);
--      } else {
--              gvnc_pointer_event(priv->gvnc, priv->button_mask | mask,
--                                 0x7FFF, 0x7FFF);
--              gvnc_pointer_event(priv->gvnc, priv->button_mask,
--                                 0x7FFF, 0x7FFF);
--      }
--
--      return TRUE;
--}
--
--static gboolean motion_event(GtkWidget *widget, GdkEventMotion *motion)
--{
--      VncDisplayPrivate *priv = VNC_DISPLAY(widget)->priv;
--      int dx, dy;
--
--      if (priv->gvnc == NULL || !gvnc_is_initialized(priv->gvnc))
--              return FALSE;
--
--      if (!priv->absolute && !priv->in_pointer_grab)
--              return FALSE;
--
--      if (priv->read_only)
--              return FALSE;
--
--#if WITH_GTKGLEXT
--      if (priv->gl_enabled) {
--              motion->x *= priv->fb.width;
--              motion->x /= priv->gl_width;
--              motion->y *= priv->fb.height;
--              motion->y /= priv->gl_height;
--      } else
--#endif
--      {
--              int ww, wh;
--              int mw = 0, mh = 0;
--
--              gdk_drawable_get_size(widget->window, &ww, &wh);
--              if (ww > priv->fb.width)
--                      mw = (ww - priv->fb.width) / 2;
--              if (wh > priv->fb.height)
--                      mh = (wh - priv->fb.height) / 2;
--
--              motion->x -= mw;
--              motion->y -= mh;
--
--              if (motion->x < 0 || motion->x >= priv->fb.width ||
--                  motion->y < 0 || motion->y >= priv->fb.height)
--                      return FALSE;
--      }
--
--      if (!priv->absolute && priv->in_pointer_grab) {
--              GdkDrawable *drawable = GDK_DRAWABLE(widget->window);
--              GdkDisplay *display = gdk_drawable_get_display(drawable);
--              GdkScreen *screen = gdk_drawable_get_screen(drawable);
--              int x = (int)motion->x_root;
--              int y = (int)motion->y_root;
--
--              if (x == 0) x += 200;
--              if (y == 0) y += 200;
--              if (x == (gdk_screen_get_width(screen) - 1)) x -= 200;
--              if (y == (gdk_screen_get_height(screen) - 1)) y -= 200;
--
--              if (x != (int)motion->x_root || y != (int)motion->y_root) {
--                      gdk_display_warp_pointer(display, screen, x, y);
--                      priv->last_x = -1;
--                      priv->last_y = -1;
--                      return FALSE;
--              }
--      }
--
--      if (priv->last_x != -1) {
--              if (priv->absolute) {
--                      dx = (int)motion->x;
--                      dy = (int)motion->y;
--              } else {
--                      dx = (int)motion->x + 0x7FFF - priv->last_x;
--                      dy = (int)motion->y + 0x7FFF - priv->last_y;
--              }
--
--              gvnc_pointer_event(priv->gvnc, priv->button_mask, dx, dy);
--      }
--
--      priv->last_x = (int)motion->x;
--      priv->last_y = (int)motion->y;
--
--      return TRUE;
--}
--
--static gboolean key_event(GtkWidget *widget, GdkEventKey *key)
--{
--      VncDisplayPrivate *priv = VNC_DISPLAY(widget)->priv;
--      guint keyval;
--      gint group, level;
--      GdkModifierType consumed;
--
--      if (priv->gvnc == NULL || !gvnc_is_initialized(priv->gvnc))
--              return FALSE;
--
--      if (priv->read_only)
--              return FALSE;
--
--      /*
--       * Key handling in VNC is screwy. The event.keyval from GTK is
--       * interpreted relative to modifier state. This really messes
--       * up with VNC which has no concept of modifiers - it just sees
--       * key up & down events - the remote end interprets modifiers
--       * itself. So if we interpret at the client end you can end up
--       * with 'Alt' key press generating Alt_L, and key release generating
--       * ISO_Prev_Group. This really really confuses the VNC server
--       * with 'Alt' getting stuck on.
--       *
--       * So we have to redo GTK's  keycode -> keyval translation
--       * using only the SHIFT modifier which the RFB explicitly
--       * requires to be interpreted at client end.
--       *
--       * Arggggh.
--       */
--      gdk_keymap_translate_keyboard_state(gdk_keymap_get_default(),
--                                          key->hardware_keycode,
--                                          key->state & (GDK_SHIFT_MASK | GDK_LOCK_MASK),
--                                          key->group,
--                                          &keyval,
--                                          &group,
--                                          &level,
--                                          &consumed);
--
--      keyval = x_keymap_get_keyval_from_keycode(key->hardware_keycode, keyval);
--
--      /*
--       * More VNC suckiness with key state & modifiers in particular
--       *
--       * Because VNC has no concept of modifiers, we have to track what keys are
--       * pressed and when the widget looses focus send fake key up events for all
--       * keys current held down. This is because upon gaining focus any keys held
--       * down are no longer likely to be down. This would thus result in keys
--       * being 'stuck on' in the remote server. eg upon Alt-Tab to switch window
--       * focus you'd never see key up for the Alt or Tab keys without this :-(
--       *
--       * This is mostly a problem with modifier keys, but its best to just track
--       * all key presses regardless. There's a limit to how many keys a user can
--       * press at once due to a max of 10 fingers (normally :-), so down_key_vals
--       * is only storing upto 16 for now. Should be plenty...
--       *
--       * Arggggh.
--       */
--      if (key->type == GDK_KEY_PRESS) {
--              int i;
--              for (i = 0 ; i < (int)(sizeof(priv->down_keyval)/sizeof(priv->down_keyval[0])) ; i++) {
--                      if (priv->down_scancode[i] == 0) {
--                              priv->down_keyval[i] = keyval;
--                              priv->down_scancode[i] = key->hardware_keycode;
--                              /* Send the actual key event we're dealing with */
--                              gvnc_key_event(priv->gvnc, 1, keyval, key->hardware_keycode);
--                              break;
--                      } else if (priv->down_scancode[i] == key->hardware_keycode) {
--                              /* Got an press when we're already pressed ! Why ... ?
--                               *
--                               * Well, GTK merges sequential press+release pairs of the same
--                               * key so instead of press+release,press+release,press+release
--                               * we only get press+press+press+press+press+release. This
--                               * really annoys some VNC servers, so we have to un-merge
--                               * them into a sensible stream of press+release pairs
--                               */
--                              /* Fake an up event for the previous down event */
--                              gvnc_key_event(priv->gvnc, 0, keyval, key->hardware_keycode);
--                              /* Now send our actual ldown event */
--                              gvnc_key_event(priv->gvnc, 1, keyval, key->hardware_keycode);
--                              break;
--                      }
--              }
--      } else {
--              int i;
--              for (i = 0 ; i < (int)(sizeof(priv->down_keyval)/sizeof(priv->down_keyval[0])) ; i++) {
--                      /* We were pressed, and now we're released, so... */
--                      if (priv->down_scancode[i] == key->hardware_keycode) {
--                              priv->down_keyval[i] = 0;
--                              priv->down_scancode[i] = 0;
--                              /* ..send the key release event we're dealing with */
--                              gvnc_key_event(priv->gvnc, 0, keyval, key->hardware_keycode);
--                              break;
--                      }
--              }
--      }
--
--      if ((!priv->grab_keyboard || !priv->absolute) &&
--          key->type == GDK_KEY_PRESS &&
--          ((keyval == GDK_Control_L && (key->state & GDK_MOD1_MASK)) ||
--           (keyval == GDK_Alt_L && (key->state & GDK_CONTROL_MASK)))) {
--              if (priv->in_pointer_grab)
--                      do_pointer_ungrab(VNC_DISPLAY(widget), FALSE);
--              else
--                      do_pointer_grab(VNC_DISPLAY(widget), FALSE);
--      }
--
--      return TRUE;
--}
--
--static gboolean enter_event(GtkWidget *widget, GdkEventCrossing *crossing)
--{
--        VncDisplayPrivate *priv = VNC_DISPLAY(widget)->priv;
--
--        if (priv->gvnc == NULL || !gvnc_is_initialized(priv->gvnc))
--                return FALSE;
--
--        if (crossing->mode != GDK_CROSSING_NORMAL)
--                return FALSE;
--
--        if (priv->grab_keyboard)
--                do_keyboard_grab(VNC_DISPLAY(widget), FALSE);
--
--        return TRUE;
--}
--
--static gboolean leave_event(GtkWidget *widget, GdkEventCrossing *crossing)
--{
--        VncDisplayPrivate *priv = VNC_DISPLAY(widget)->priv;
--
--        if (priv->gvnc == NULL || !gvnc_is_initialized(priv->gvnc))
--                return FALSE;
--
--        if (crossing->mode != GDK_CROSSING_NORMAL)
--                return FALSE;
--
--        if (priv->grab_keyboard)
--                do_keyboard_ungrab(VNC_DISPLAY(widget), FALSE);
--
--        if (priv->grab_pointer)
--                do_pointer_ungrab(VNC_DISPLAY(widget), FALSE);
--
--        return TRUE;
--}
--
--
--static gboolean focus_event(GtkWidget *widget, GdkEventFocus *focus G_GNUC_UNUSED)
--{
--        VncDisplayPrivate *priv = VNC_DISPLAY(widget)->priv;
--      int i;
--
--        if (priv->gvnc == NULL || !gvnc_is_initialized(priv->gvnc))
--                return FALSE;
--
--      for (i = 0 ; i < (int)(sizeof(priv->down_keyval)/sizeof(priv->down_keyval[0])) ; i++) {
--              /* We are currently pressed so... */
--              if (priv->down_scancode[i] != 0) {
--                      /* ..send the fake key release event to match */
--                      gvnc_key_event(priv->gvnc, 0,
--                                     priv->down_keyval[i], priv->down_scancode[i]);
--                      priv->down_keyval[i] = 0;
--                      priv->down_scancode[i] = 0;
--              }
--      }
--
--        return TRUE;
--}
--
--#if WITH_GTKGLEXT
--static void realize_event(GtkWidget *widget)
--{
--      VncDisplayPrivate *priv = VNC_DISPLAY(widget)->priv;
--
--      GTK_WIDGET_CLASS (vnc_display_parent_class)->realize(widget);
--
--      if (priv->gl_config == NULL)
--              return;
--
--      priv->gl_drawable = gtk_widget_get_gl_drawable(widget);
--      priv->gl_context = gtk_widget_get_gl_context(widget);
--}
--#endif
--
--static gboolean on_update(void *opaque, int x, int y, int w, int h)
--{
--      GtkWidget *widget = GTK_WIDGET(opaque);
--      VncDisplay *obj = VNC_DISPLAY(widget);
--      VncDisplayPrivate *priv = obj->priv;
--
--#if WITH_GTKGLEXT
--      if (priv->gl_enabled) {
--              double scale_x, scale_y;
--
--              scale_x = (double)priv->gl_width / priv->fb.width;
--              scale_y = (double)priv->gl_height / priv->fb.height;
--
--              x *= scale_x;
--              y *= scale_y;
--              w *= scale_x;
--              h *= scale_y;
--      } else
--#endif
--      {
--              int ww, wh;
--              int mw = 0, mh = 0;
--
--              gdk_drawable_get_size(widget->window, &ww, &wh);
--              if (ww > priv->fb.width)
--                      mw = (ww - priv->fb.width) / 2;
--              if (wh > priv->fb.height)
--                      mh = (wh - priv->fb.height) / 2;
--
--              x += mw;
--              y += mh;
--      }
--
--      gtk_widget_queue_draw_area(widget, x, y, w, h);
--
--      return TRUE;
--}
--
--static void setup_gdk_image(VncDisplay *obj, gint width, gint height)
--{
--      VncDisplayPrivate *priv = obj->priv;
--      GdkVisual *visual;
--
--      visual = gdk_drawable_get_visual(GTK_WIDGET(obj)->window);
--
--      priv->image = gdk_image_new(GDK_IMAGE_FASTEST, visual, width, height);
--      GVNC_DEBUG("Visual mask: %3d %3d %3d\n      shift: %3d %3d %3d\n",
--                 visual->red_mask,
--                 visual->green_mask,
--                 visual->blue_mask,
--                 visual->red_shift,
--                 visual->green_shift,
--                 visual->blue_shift);
--
--      priv->fb.red_mask = visual->red_mask >> visual->red_shift;
--      priv->fb.green_mask = visual->green_mask >> visual->green_shift;
--      priv->fb.blue_mask = visual->blue_mask >> visual->blue_shift;
--      priv->fb.red_shift = visual->red_shift;
--      priv->fb.green_shift = visual->green_shift;
--      priv->fb.blue_shift = visual->blue_shift;
--      priv->fb.depth = priv->image->depth;
--      priv->fb.bpp = priv->image->bpp;
--      priv->fb.width = priv->image->width;
--      priv->fb.height = priv->image->height;
--      priv->fb.linesize = priv->image->bpl;
--      priv->fb.data = (uint8_t *)priv->image->mem;
--      priv->fb.byte_order = priv->image->byte_order == GDK_LSB_FIRST ? G_LITTLE_ENDIAN : G_BIG_ENDIAN;
--
--      if (priv->force_size)
--              gtk_widget_set_size_request(GTK_WIDGET(obj), width, height);
--}
--
--#if WITH_GTKGLEXT
--static int pow_of_2(int value)
--{
--      int i;
--      for (i = 0; value >= (1 << i); i++);
--      return (1 << i);
--}
--
--static void setup_gl_image(VncDisplay *obj, gint width, gint height)
--{
--      VncDisplayPrivate *priv = VNC_DISPLAY(obj)->priv;
--      void *dummy;
--
--      priv->gl_texture_width = pow_of_2(width);
--      priv->gl_texture_height = pow_of_2(height);
--
--      gdk_gl_drawable_gl_begin(priv->gl_drawable, priv->gl_context);
--
--      glGenTextures(1, &priv->gl_tex);
--      glBindTexture(GL_TEXTURE_2D, priv->gl_tex);
--      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
--      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
--
--      dummy = g_malloc(priv->gl_texture_width*priv->gl_texture_height*4);
--      memset(dummy, 0, priv->gl_texture_width*priv->gl_texture_height*4);
--      glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
--                   priv->gl_texture_width, priv->gl_texture_height, 0,
--                   GL_RGB, GL_UNSIGNED_BYTE,
--                   dummy);
--      g_free(dummy);
--      
--      gdk_gl_drawable_gl_end(priv->gl_drawable);
--
--      priv->gl_tex_data = g_malloc(width * height * 4);
--
--      priv->fb.red_mask = 0xFF;
--      priv->fb.green_mask = 0xFF;
--      priv->fb.blue_mask = 0xFF;
--      priv->fb.red_shift = 16;
--      priv->fb.green_shift = 8;
--      priv->fb.blue_shift = 0;
--      priv->fb.depth = 32;
--      priv->fb.bpp = 4;
--      priv->fb.width = width;
--      priv->fb.height = height;
--      priv->fb.linesize = priv->fb.width * priv->fb.bpp;
--      priv->fb.data = (uint8_t *)priv->gl_tex_data;
--}
--#endif
--
--static gboolean emit_signal_auth_cred(gpointer opaque)
--{
--      struct signal_data *s = opaque;
--
--      switch (s->signum) {
--      case VNC_AUTH_CREDENTIAL:
--              g_signal_emit(G_OBJECT(s->obj),
--                            signals[VNC_AUTH_CREDENTIAL],
--                            0,
--                            s->cred_list);
--              break;
--      case VNC_DESKTOP_RESIZE:
--              g_signal_emit(G_OBJECT(s->obj),
--                            signals[VNC_DESKTOP_RESIZE],
--                            0,
--                            s->width, s->height);
--              break;
--      case VNC_AUTH_FAILURE:
--              g_signal_emit(G_OBJECT(s->obj),
--                            signals[VNC_AUTH_FAILURE],
--                            0,
--                            s->msg);
--              break;
--      case VNC_AUTH_UNSUPPORTED:
--              g_signal_emit(G_OBJECT(s->obj),
--                            signals[VNC_AUTH_UNSUPPORTED],
--                            0,
--                            s->auth_type);
--              break;
--      case VNC_SERVER_CUT_TEXT:
--              g_signal_emit(G_OBJECT(s->obj),
--                            signals[VNC_SERVER_CUT_TEXT],
--                            0,
--                            s->str->str);
--              break;
--      case VNC_BELL:
--      case VNC_CONNECTED:
--      case VNC_INITIALIZED:
--      case VNC_DISCONNECTED:
--              g_signal_emit(G_OBJECT(s->obj),
--                            signals[s->signum],
--                            0);
--              break;
--      }
--
--      coroutine_yieldto(s->caller, NULL);
--      
--      return FALSE;
--}
--
--/* This function should be used to emit signals from gvnc callbacks */
--static void emit_signal_delayed(VncDisplay *obj, int signum,
--                              struct signal_data *data)
--{
--      data->obj = obj;
--      data->caller = coroutine_self();
--      data->signum = signum;
--      g_idle_add(emit_signal_auth_cred, data);
--      coroutine_yield(NULL);
--}
--
--static gboolean do_resize(void *opaque, int width, int height, gboolean quiet)
--{
--      VncDisplay *obj = VNC_DISPLAY(opaque);
--      VncDisplayPrivate *priv = obj->priv;
--      struct signal_data s;
--
--      if (priv->gvnc == NULL || !gvnc_is_initialized(priv->gvnc))
--              return TRUE;
--
--      if (priv->image) {
--              g_object_unref(priv->image);
--              priv->image = NULL;
--      }
--
--#if WITH_GTKGLEXT
--      if (priv->gl_tex_data) {
--              gdk_gl_drawable_gl_begin(priv->gl_drawable,
--                                       priv->gl_context);
--              glDeleteTextures(1, &priv->gl_tex);
--              gdk_gl_drawable_gl_end(priv->gl_drawable);
--              g_free(priv->gl_tex_data);
--              priv->gl_tex_data = NULL;
--      }
--#endif
--
--      if (priv->gc == NULL) {
--              priv->null_cursor = create_null_cursor();
--              if (priv->local_pointer)
--                      do_pointer_show(obj);
--              else if (priv->in_pointer_grab || priv->absolute)
--                      do_pointer_hide(obj);
--              priv->gc = gdk_gc_new(GTK_WIDGET(obj)->window);
--      }
--
--#if WITH_GTKGLEXT
--      if (priv->gl_enabled)
--              setup_gl_image(obj, width, height);
--      else
--#endif
--              setup_gdk_image(obj, width, height);
--
--      gvnc_set_local(priv->gvnc, &priv->fb);
--
--      if (!quiet) {
--              s.width = width;
--              s.height = height;
--              emit_signal_delayed(obj, VNC_DESKTOP_RESIZE, &s);
--      }
--
--      return TRUE;
--}
--
--static gboolean on_resize(void *opaque, int width, int height)
--{
--      return do_resize(opaque, width, height, FALSE);
--}
--
--static gboolean on_pixel_format(void *opaque, 
--      struct gvnc_pixel_format *fmt G_GNUC_UNUSED)
--{
--        VncDisplay *obj = VNC_DISPLAY(opaque);
--        VncDisplayPrivate *priv = obj->priv;
--
--        return do_resize(opaque, priv->fb.width, priv->fb.height, TRUE);
--}
--
--static gboolean on_get_preferred_pixel_format(void *opaque,
--      struct gvnc_pixel_format *fmt)
--{
--      VncDisplay *obj = VNC_DISPLAY(opaque);
--      GdkVisual *v =  gdk_drawable_get_visual(GTK_WIDGET(obj)->window);
--
--      GVNC_DEBUG("Setting pixel format to true color\n");
--
--      fmt->true_color_flag = 1;
--      fmt->depth = v->depth;
--      fmt->bits_per_pixel = v->depth > 16 ? 32 : v->depth;
--      fmt->red_max = v->red_mask >> v->red_shift;
--      fmt->green_max = v->green_mask >> v->green_shift;
--      fmt->blue_max = v->blue_mask >> v->blue_shift;
--      fmt->red_shift = v->red_shift;
--      fmt->green_shift = v->green_shift;
--      fmt->blue_shift = v->blue_shift;
--      fmt->byte_order = v->byte_order == GDK_LSB_FIRST ? G_BIG_ENDIAN : G_LITTLE_ENDIAN;
--
--      return TRUE;
--}
--
--#if WITH_GTKGLEXT
--static void build_gl_image_from_gdk(uint32_t *data, GdkImage *image)
--{
--      GdkVisual *visual;
--      int i, j;
--      uint8_t *row;
--
--      visual = image->visual;
--      row = image->mem;
--      for (j = 0; j < image->height; j++) {
--              uint8_t *src = row;
--              for (i = 0; i < image->width; i++) {
--                      uint32_t pixel = 0;
--                      switch (image->bpp) {
--                      case 1:
--                              pixel = *(uint8_t *)src;
--                              break;
--                      case 2:
--                              pixel = *(uint16_t *)src;
--                              break;
--                      case 4:
--                              pixel = *(uint32_t *)src;
--                              break;
--                      }
--                      *data = ((pixel & visual->red_mask) >> visual->red_shift) << (24 - visual->red_prec) |
--                              ((pixel & visual->green_mask) >> visual->green_shift) << (16 - visual->green_prec) |
--                              ((pixel & visual->blue_mask) >> visual->blue_shift) << (8 - visual->blue_prec);
--                      src += image->bpp;
--                      data++;
--              }
--              row += image->bpl;
--
--      }
--}
--
--static void build_gdk_image_from_gl(GdkImage *image, uint32_t *data)
--{
--      GdkVisual *visual;
--      int i, j;
--      uint8_t *row;
--
--      visual = image->visual;
--      row = image->mem;
--      for (j = 0; j < image->height; j++) {
--              uint8_t *dst = row;
--              for (i = 0; i < image->width; i++) {
--                      uint32_t pixel;
--
--                      pixel = (((*data >> (24 - visual->red_prec)) << visual->red_shift) & visual->red_mask) |
--                              (((*data >> (16 - visual->green_prec)) << visual->green_shift) & visual->green_mask) |
--                              (((*data >> (8 - visual->blue_prec)) << visual->blue_shift) & visual->blue_mask);
--
--                      switch (image->bpp) {
--                      case 1:
--                              *(uint8_t *)dst = pixel;
--                              break;
--                      case 2:
--                              *(uint16_t *)dst = pixel;
--                              break;
--                      case 4:
--                              *(uint32_t *)dst = pixel;
--                              break;
--                      }
--                      dst += image->bpp;
--                      data++;
--              }
--              row += image->bpl;
--      }
--}
--
--static void scale_display(VncDisplay *obj, gint width, gint height)
--{
--      VncDisplayPrivate *priv = VNC_DISPLAY(obj)->priv;
--
--      if (priv->gl_drawable == NULL)
--              return;
--
--      if (priv->gl_enabled == 0) {
--              GdkImage *image;
--
--              priv->gl_enabled = 1;
--
--              image = priv->image;
--              priv->image = NULL;
--      
--              do_resize(obj, priv->fb.width, priv->fb.height, TRUE);
--              build_gl_image_from_gdk((uint32_t *)priv->fb.data, image);
--
--              g_object_unref(image);
--      }
--
--      priv->gl_width = width;
--      priv->gl_height = height;
--
--      gdk_gl_drawable_gl_begin(priv->gl_drawable, priv->gl_context);
--      glClearColor (0.0, 0.0, 0.0, 0.0);
--      glShadeModel(GL_FLAT);
--      glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
--    
--      glViewport(0, 0, priv->gl_width, priv->gl_height);
--      glMatrixMode(GL_PROJECTION);
--      glLoadIdentity();
--      glOrtho(0.0, priv->gl_width, 0.0, priv->gl_height, -1, 1);
--      glMatrixMode(GL_MODELVIEW);
--      glLoadIdentity();
--      gdk_gl_drawable_gl_end(priv->gl_drawable);
--}
--
--static void rescale_display(VncDisplay *obj, gint width, gint height)
--{
--      VncDisplayPrivate *priv = obj->priv;
--
--      if (priv->allow_scaling && 
--          (priv->fb.width != width ||
--           priv->fb.height != height))
--              scale_display(obj, width, height);
--      else if (priv->gl_enabled) {
--              void *data;
--              priv->gl_enabled = 0;
--
--              data = priv->gl_tex_data;
--              priv->gl_tex_data = NULL;
--
--              do_resize(GTK_WIDGET(obj), priv->fb.width, priv->fb.height, TRUE);
--
--              build_gdk_image_from_gl(priv->image, (uint32_t *)data);
--              gdk_gl_drawable_gl_begin(priv->gl_drawable,
--                                       priv->gl_context);
--              glDeleteTextures(1, &priv->gl_tex);
--              gdk_gl_drawable_gl_end(priv->gl_drawable);
--              g_free(data);
--      }
--}
--
--static gboolean configure_event(GtkWidget *widget, GdkEventConfigure *configure)
--{
--      VncDisplay *obj = VNC_DISPLAY(widget);
--      VncDisplayPrivate *priv = obj->priv;
--
--      if (priv->fb.data == NULL)
--              return FALSE;
--
--      rescale_display(VNC_DISPLAY(widget),
--                      configure->width, configure->height);
--      
--      return FALSE;
--}
--#endif
--
--static gboolean on_pointer_type_change(void *opaque, int absolute)
--{
--      VncDisplay *obj = VNC_DISPLAY(opaque);
--      VncDisplayPrivate *priv = obj->priv;
--
--      if (absolute && priv->in_pointer_grab && !priv->grab_pointer)
--              do_pointer_ungrab(obj, FALSE);
--
--      priv->absolute = absolute;
--
--      if (!priv->in_pointer_grab && !priv->absolute)
--              do_pointer_show(obj);
--
--      return TRUE;
--}
--
--static gboolean on_auth_cred(void *opaque)
--{
--      VncDisplay *obj = VNC_DISPLAY(opaque);
--      GValueArray *cred_list;
--      GValue username, password, clientname;
--      struct signal_data s;
--
--      memset(&username, 0, sizeof(username));
--      memset(&password, 0, sizeof(password));
--      memset(&clientname, 0, sizeof(clientname));
--
--      cred_list = g_value_array_new(0);
--      if (gvnc_wants_credential_username(obj->priv->gvnc)) {
--              g_value_init(&username, G_PARAM_SPEC_VALUE_TYPE(signalCredParam));
--              g_value_set_enum(&username, VNC_DISPLAY_CREDENTIAL_USERNAME);
--              cred_list = g_value_array_append(cred_list, &username);
--      }
--      if (gvnc_wants_credential_password(obj->priv->gvnc)) {
--              g_value_init(&password, G_PARAM_SPEC_VALUE_TYPE(signalCredParam));
--              g_value_set_enum(&password, VNC_DISPLAY_CREDENTIAL_PASSWORD);
--              cred_list = g_value_array_append(cred_list, &password);
--      }
--      if (gvnc_wants_credential_x509(obj->priv->gvnc)) {
--              g_value_init(&clientname, G_PARAM_SPEC_VALUE_TYPE(signalCredParam));
--              g_value_set_enum(&clientname, VNC_DISPLAY_CREDENTIAL_CLIENTNAME);
--              cred_list = g_value_array_append(cred_list, &clientname);
--      }
--
--      s.cred_list = cred_list;
--      emit_signal_delayed(obj, VNC_AUTH_CREDENTIAL, &s);
--
--      g_value_array_free(cred_list);
--
--      return TRUE;
--}
--
--static gboolean on_auth_type(void *opaque, unsigned int ntype, unsigned int *types)
--{
--      VncDisplay *obj = VNC_DISPLAY(opaque);
--      VncDisplayPrivate *priv = obj->priv;
--      GSList *l;
--      guint i;
--
--      if (!ntype)
--              return TRUE;
--
--      for (l = priv->preferable_auths; l; l=l->next) {
--              gvnc_auth pref = GPOINTER_TO_UINT (l->data);
--
--              for (i=0; i<ntype; i++) {
--                      if (pref == types[i]) {
--                              gvnc_set_auth_type(priv->gvnc, types[i]);
--                              return TRUE;
--                      }
--              }
--      }
--      
--      gvnc_set_auth_type(priv->gvnc, types[0]);
--      return TRUE;
--}
--
--static gboolean on_auth_subtype(void *opaque, unsigned int ntype, unsigned int *types)
--{
--      VncDisplay *obj = VNC_DISPLAY(opaque);
--      VncDisplayPrivate *priv = obj->priv;
--
--      GSList *l;
--      guint i;
--
--      if (!ntype)
--              return TRUE;
--
--      for (l = priv->preferable_auths; l; l=l->next) {
--              gvnc_auth pref = GPOINTER_TO_UINT (l->data);
--
--              for (i=0; i<ntype; i++) {
--                      if (pref == types[i]) {
--                              gvnc_set_auth_subtype(priv->gvnc, types[i]);
--                              return TRUE;
--                      }
--              }
--      }
--      
--      gvnc_set_auth_subtype(priv->gvnc, types[0]);
--      return TRUE;
--}
--
--static gboolean on_auth_failure(void *opaque, const char *msg)
--{
--      VncDisplay *obj = VNC_DISPLAY(opaque);
--      struct signal_data s;
--
--      s.msg = msg;
--      emit_signal_delayed(obj, VNC_AUTH_FAILURE, &s);
--
--      return TRUE;
--}
--
--static gboolean on_auth_unsupported(void *opaque, unsigned int auth_type)
--{
--      VncDisplay *obj = VNC_DISPLAY(opaque);
--      struct signal_data s;
--
--      s.auth_type = auth_type;
--      emit_signal_delayed(obj, VNC_AUTH_UNSUPPORTED, &s);
--
--      return TRUE;
--}
--
--static gboolean on_server_cut_text(void *opaque, const void* text, size_t len)
--{
--      VncDisplay *obj = VNC_DISPLAY(opaque);
--      GString *str = g_string_new_len ((const gchar *)text, len);
--      struct signal_data s;
--
--      s.str = str;
--      emit_signal_delayed(obj, VNC_SERVER_CUT_TEXT, &s);
--
--      g_string_free (str, TRUE);
--      return TRUE;
--}
--
--static gboolean on_bell(void *opaque)
--{
--      VncDisplay *obj = VNC_DISPLAY(opaque);
--      struct signal_data s;
--
--      emit_signal_delayed(obj, VNC_BELL, &s);
--
--      return TRUE;
--}
--
--static gboolean on_local_cursor(void *opaque, int x, int y, int width, int height, uint8_t *image)
--{
--      VncDisplay *obj = VNC_DISPLAY(opaque);
--      VncDisplayPrivate *priv = obj->priv;
--
--      if (priv->remote_cursor) {
--              gdk_cursor_unref(priv->remote_cursor);
--              priv->remote_cursor = NULL;
--      }
--
--      if (width && height) {
--              GdkDisplay *display = gdk_drawable_get_display(GDK_DRAWABLE(GTK_WIDGET(obj)->window));
--              GdkPixbuf *pixbuf = gdk_pixbuf_new_from_data(image, GDK_COLORSPACE_RGB,
--                                                           TRUE, 8, width, height,
--                                                           width * 4, NULL, NULL);
--              priv->remote_cursor = gdk_cursor_new_from_pixbuf(display,
--                                                               pixbuf,
--                                                               x, y);
--              gdk_pixbuf_unref(pixbuf);
--      }
--
--      if (priv->in_pointer_grab) {
--              do_pointer_ungrab(obj, TRUE);
--              do_pointer_grab(obj, TRUE);
--      } else if (priv->absolute) {
--              do_pointer_hide(obj);
--      }
--
--      return TRUE;
--}
--
--static gboolean check_pixbuf_support(const char *name)
--{
--      GSList *list, *i;
--
--      list = gdk_pixbuf_get_formats();
--
--      for (i = list; i; i = i->next) {
--              GdkPixbufFormat *fmt = i->data;
--              if (!strcmp(gdk_pixbuf_format_get_name(fmt), name))
--                      break;
--      }
--
--      g_slist_free(list);
--
--      return !!(i);
--}
--
--static gboolean on_render_jpeg(void *opaque G_GNUC_UNUSED,
--                             rgb24_render_func *render, void *render_opaque,
--                             int x, int y, int w, int h,
--                             uint8_t *data, int size)
--{
--      GdkPixbufLoader *loader = gdk_pixbuf_loader_new();
--      GdkPixbuf *p;
--      uint8_t *pixels;
--
--      if (!gdk_pixbuf_loader_write(loader, data, size, NULL))
--              return FALSE;
--
--      gdk_pixbuf_loader_close(loader, NULL);
--
--      p = g_object_ref(gdk_pixbuf_loader_get_pixbuf(loader));
--      g_object_unref(loader);
--
--      pixels = gdk_pixbuf_get_pixels(p);
--
--      render(render_opaque, x, y, w, h,
--             gdk_pixbuf_get_pixels(p),
--             gdk_pixbuf_get_rowstride(p));
--
--      gdk_pixbuf_unref(p);
--
--      return TRUE;
--}
--
--static const struct gvnc_ops vnc_display_ops = {
--      .auth_cred = on_auth_cred,
--      .auth_type = on_auth_type,
--      .auth_subtype = on_auth_subtype,
--      .auth_failure = on_auth_failure,
--      .update = on_update,
--      .resize = on_resize,
--        .pixel_format = on_pixel_format,
--      .pointer_type_change = on_pointer_type_change,
--      .local_cursor = on_local_cursor,
--      .auth_unsupported = on_auth_unsupported,
--      .server_cut_text = on_server_cut_text,
--      .bell = on_bell,
--      .render_jpeg = on_render_jpeg,
--      .get_preferred_pixel_format = on_get_preferred_pixel_format
--};
--
--/* we use an idle function to allow the coroutine to exit before we actually
-- * unref the object since the coroutine's state is part of the object */
--static gboolean delayed_unref_object(gpointer data)
--{
--      VncDisplay *obj = VNC_DISPLAY(data);
--
--      g_assert(obj->priv->coroutine.exited == TRUE);
--
--      if (obj->priv->image) {
--              g_object_unref(obj->priv->image);
--              obj->priv->image = NULL;
--      }
--
--#if WITH_GTKGLEXT
--      if (obj->priv->gl_tex_data)
--              g_free(obj->priv->gl_tex_data);
--      obj->priv->gl_tex_data = NULL;
--      obj->priv->gl_enabled = 0;
--#endif
--
--      g_object_unref(G_OBJECT(data));
--      return FALSE;
--}
--
--static void *vnc_coroutine(void *opaque)
--{
--      VncDisplay *obj = VNC_DISPLAY(opaque);
--      VncDisplayPrivate *priv = obj->priv;
--
--      /* this order is extremely important! */
--      int32_t encodings[] = { GVNC_ENCODING_TIGHT_JPEG5,
--                              GVNC_ENCODING_TIGHT,
--                              GVNC_ENCODING_EXT_KEY_EVENT,
--                              GVNC_ENCODING_DESKTOP_RESIZE,
--                                GVNC_ENCODING_WMVi,
--                              GVNC_ENCODING_RICH_CURSOR,
--                              GVNC_ENCODING_XCURSOR,
--                              GVNC_ENCODING_POINTER_CHANGE,
--                              GVNC_ENCODING_ZRLE,
--                              GVNC_ENCODING_HEXTILE,
--                              GVNC_ENCODING_RRE,
--                              GVNC_ENCODING_COPY_RECT,
--                              GVNC_ENCODING_RAW };
--      int32_t *encodingsp;
--      int n_encodings;
--      int ret;
--      struct signal_data s;
--
--      if (priv->gvnc == NULL || gvnc_is_open(priv->gvnc)) {
--              g_idle_add(delayed_unref_object, obj);
--              return NULL;
--      }
--
--      GVNC_DEBUG("Started background coroutine\n");
--      x_keymap_set_keymap_entries();
--
--      if (priv->fd != -1) {
--              if (!gvnc_open_fd(priv->gvnc, priv->fd))
--                      goto cleanup;
--      } else {
--              if (!gvnc_open_host(priv->gvnc, priv->host, priv->port))
--                      goto cleanup;
--      }
--
--      emit_signal_delayed(obj, VNC_CONNECTED, &s);
--
--      GVNC_DEBUG("Protocol initialization\n");
--      if (!gvnc_initialize(priv->gvnc, priv->shared_flag))
--              goto cleanup;
--
--      emit_signal_delayed(obj, VNC_INITIALIZED, &s);
--
--      encodingsp = encodings;
--      n_encodings = G_N_ELEMENTS(encodings);
--
--      if (check_pixbuf_support("jpeg")) {
--              if (!priv->allow_lossy) {
--                      encodingsp++;
--                      n_encodings--;
--              }
--      } else {
--              encodingsp += 2;
--              n_encodings -= 2;
--      }
--
--      if (!gvnc_set_encodings(priv->gvnc, n_encodings, encodingsp))
--                      goto cleanup;
--
--      if (!gvnc_framebuffer_update_request(priv->gvnc, 0, 0, 0, priv->fb.width, priv->fb.height))
--              goto cleanup;
--
--      GVNC_DEBUG("Running main loop\n");
--      while ((ret = gvnc_server_message(priv->gvnc))) {
--              if (!gvnc_framebuffer_update_request(priv->gvnc, 1, 0, 0,
--                                                   priv->fb.width, priv->fb.height))
--                      goto cleanup;
--      }
--
-- cleanup:
--      GVNC_DEBUG("Doing final VNC cleanup\n");
--      gvnc_close(priv->gvnc);
--      emit_signal_delayed(obj, VNC_DISCONNECTED, &s);
--      g_idle_add(delayed_unref_object, obj);
--      x_keymap_free_keymap_entries();
--      /* Co-routine exits now - the VncDisplay object may no longer exist,
--         so don't do anything else now unless you like SEGVs */
--      return NULL;
--}
--
--static gboolean do_vnc_display_open(gpointer data)
--{
--      VncDisplay *obj = VNC_DISPLAY(data);
--      struct coroutine *co;
--
--      if (obj->priv->gvnc == NULL || gvnc_is_open(obj->priv->gvnc)) {
--              g_object_unref(G_OBJECT(obj));
--              return FALSE;
--      }
--
--      obj->priv->open_id = 0;
--
--      co = &obj->priv->coroutine;
--
--      co->stack_size = 16 << 20;
--      co->entry = vnc_coroutine;
--      co->release = NULL;
--
--      coroutine_init(co);
--      coroutine_yieldto(co, obj);
--
--      return FALSE;
--}
--
--gboolean vnc_display_open_fd(VncDisplay *obj, int fd)
--{
--      if (obj->priv->gvnc == NULL || gvnc_is_open(obj->priv->gvnc))
--              return FALSE;
--
--      obj->priv->fd = fd;
--      obj->priv->host = NULL;
--      obj->priv->port = NULL;
--
--      g_object_ref(G_OBJECT(obj)); /* Unref'd when co-routine exits */
--      obj->priv->open_id = g_idle_add(do_vnc_display_open, obj);
--
--      return TRUE;
--}
--
--gboolean vnc_display_open_host(VncDisplay *obj, const char *host, const char *port)
--{
--      if (obj->priv->gvnc == NULL || gvnc_is_open(obj->priv->gvnc))
--              return FALSE;
--
--      obj->priv->host = g_strdup(host);
--      if (!obj->priv->host) {
--              return FALSE;
--      }
--      obj->priv->port = g_strdup(port);
--      if (!obj->priv->port) {
--              g_free(obj->priv->host);
--              obj->priv->host = NULL;
--              return FALSE;
--      }
--
--      g_object_ref(G_OBJECT(obj)); /* Unref'd when co-routine exits */
--      obj->priv->open_id = g_idle_add(do_vnc_display_open, obj);
--      return TRUE;
--}
--
--gboolean vnc_display_is_open(VncDisplay *obj)
--{
--      if (obj->priv->gvnc == NULL)
--              return FALSE;
--      return gvnc_is_open(obj->priv->gvnc);
--}
--
--void vnc_display_close(VncDisplay *obj)
--{
--      VncDisplayPrivate *priv = obj->priv;
--      GtkWidget *widget = GTK_WIDGET(obj);
--
--      if (priv->open_id) {
--              g_source_remove(priv->open_id);
--              obj->priv->open_id = 0;
--      }
--
--      if (priv->gvnc == NULL)
--              return;
--
--      if (gvnc_is_open(priv->gvnc)) {
--              GVNC_DEBUG("Requesting graceful shutdown of connection\n");
--              gvnc_shutdown(priv->gvnc);
--      }
--
--#if WITH_GTKGLEXT
--      if (priv->gl_tex_data) {
--              gdk_gl_drawable_gl_begin(priv->gl_drawable,
--                                       priv->gl_context);
--              glDeleteTextures(1, &priv->gl_tex);
--              gdk_gl_drawable_gl_end(priv->gl_drawable);
--      }
--#endif
--
--      if (widget->window) {
--              gint width, height;
--
--              gdk_drawable_get_size(widget->window, &width, &height);
--              gtk_widget_queue_draw_area(widget, 0, 0, width, height);
--      }
--}
--
--
--void vnc_display_send_keys(VncDisplay *obj, const guint *keyvals, int nkeyvals)
--{
--      vnc_display_send_keys_ex(obj, keyvals,
--                               nkeyvals, VNC_DISPLAY_KEY_EVENT_CLICK);
--}
--
--static guint get_keycode_from_keyval(guint keyval)
--{
--      guint keycode = 0;
--      GdkKeymapKey *keys = NULL;
--      gint n_keys = 0;
--
--      if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(),
--                                            keyval, &keys, &n_keys)) {
--              /* FIXME what about levels? */
--              keycode = keys[0].keycode;
--              g_free(keys);
--      }
--
--      return keycode;
--}
--
--void vnc_display_send_keys_ex(VncDisplay *obj, const guint *keyvals,
--                            int nkeyvals, VncDisplayKeyEvent kind)
--{
--      int i;
--
--      if (obj->priv->gvnc == NULL || !gvnc_is_open(obj->priv->gvnc))
--              return;
--
--      if (kind & VNC_DISPLAY_KEY_EVENT_PRESS) {
--              for (i = 0 ; i < nkeyvals ; i++)
--                      gvnc_key_event(obj->priv->gvnc, 1, keyvals[i],
--                                     get_keycode_from_keyval(keyvals[i]));
--      }
--
--      if (kind & VNC_DISPLAY_KEY_EVENT_RELEASE) {
--              for (i = (nkeyvals-1) ; i >= 0 ; i--)
--                      gvnc_key_event(obj->priv->gvnc, 0, keyvals[i],
--                                     get_keycode_from_keyval(keyvals[i]));
--      }
--}
--
--void vnc_display_send_pointer(VncDisplay *obj, gint x, gint y, int button_mask)
--{
--      VncDisplayPrivate *priv = obj->priv;
--
--      if (priv->gvnc == NULL || !gvnc_is_open(obj->priv->gvnc))
--              return;
--
--      if (priv->absolute) {
--              priv->button_mask = button_mask;
--              priv->last_x = x;
--              priv->last_y = y;
--              gvnc_pointer_event(priv->gvnc, priv->button_mask, x, y);
--      }
--}
--
--static void vnc_display_destroy (GtkObject *obj)
--{
--      VncDisplay *display = VNC_DISPLAY (obj);
--      GVNC_DEBUG("Requesting that VNC close\n");
--      vnc_display_close(display);
--      GTK_OBJECT_CLASS (vnc_display_parent_class)->destroy (obj);
--}
--
--
--static void vnc_display_finalize (GObject *obj)
--{
--      VncDisplay *display = VNC_DISPLAY (obj);
--      VncDisplayPrivate *priv = display->priv;
--
--      GVNC_DEBUG("Releasing VNC widget\n");
--      if (gvnc_is_open(priv->gvnc)) {
--              g_warning("VNC widget finalized before the connection finished shutting down\n");
--      }
--      gvnc_free(priv->gvnc);
--      display->priv->gvnc = NULL;
--
--#if WITH_GTKGLEXT
--      if (priv->gl_enabled) {
--              gdk_gl_drawable_gl_begin(priv->gl_drawable,
--                                       priv->gl_context);
--              glDeleteTextures(1, &priv->gl_tex);
--              gdk_gl_drawable_gl_end(priv->gl_drawable);
--              if (priv->gl_tex_data) {
--                      g_free(priv->gl_tex_data);
--                      priv->gl_tex_data = NULL;
--              }
--      }
--
--      if (priv->gl_config) {
--              g_object_unref(G_OBJECT(priv->gl_config));
--              priv->gl_config = NULL;
--      }
--#endif
--
--      if (priv->image) {
--              g_object_unref(priv->image);
--              priv->image = NULL;
--      }
--
--      g_slist_free (priv->preferable_auths);
--
--      G_OBJECT_CLASS (vnc_display_parent_class)->finalize (obj);
--}
--
--static void vnc_display_class_init(VncDisplayClass *klass)
--{
--      GObjectClass *object_class = G_OBJECT_CLASS (klass);
--      GtkObjectClass *gtkobject_class = GTK_OBJECT_CLASS (klass);
--      GtkWidgetClass *gtkwidget_class = GTK_WIDGET_CLASS (klass);
--
--      gtkwidget_class->expose_event = expose_event;
--      gtkwidget_class->motion_notify_event = motion_event;
--      gtkwidget_class->button_press_event = button_event;
--      gtkwidget_class->button_release_event = button_event;
--      gtkwidget_class->scroll_event = scroll_event;
--      gtkwidget_class->key_press_event = key_event;
--      gtkwidget_class->key_release_event = key_event;
--      gtkwidget_class->enter_notify_event = enter_event;
--      gtkwidget_class->leave_notify_event = leave_event;
--      gtkwidget_class->focus_out_event = focus_event;
--#if WITH_GTKGLEXT
--      gtkwidget_class->realize = realize_event;
--      gtkwidget_class->configure_event = configure_event;
--#endif
--
--
--      object_class->finalize = vnc_display_finalize;
--      object_class->get_property = vnc_display_get_property;
--      object_class->set_property = vnc_display_set_property;
--
--      gtkobject_class->destroy = vnc_display_destroy;
--
--      g_object_class_install_property (object_class,
--                                       PROP_POINTER_LOCAL,
--                                       g_param_spec_boolean ( "local-pointer",
--                                                              "Local Pointer",
--                                                              "Whether we should use the local pointer",
--                                                              FALSE,
--                                                              G_PARAM_READWRITE |
--                                                              G_PARAM_CONSTRUCT |
--                                                              G_PARAM_STATIC_NAME |
--                                                              G_PARAM_STATIC_NICK |
--                                                              G_PARAM_STATIC_BLURB));
--      g_object_class_install_property (object_class,
--                                       PROP_POINTER_GRAB,
--                                       g_param_spec_boolean ( "grab-pointer",
--                                                              "Grab Pointer",
--                                                              "Whether we should grab the pointer",
--                                                              FALSE,
--                                                              G_PARAM_READWRITE |
--                                                              G_PARAM_CONSTRUCT |
--                                                              G_PARAM_STATIC_NAME |
--                                                              G_PARAM_STATIC_NICK |
--                                                              G_PARAM_STATIC_BLURB));
--      g_object_class_install_property (object_class,
--                                       PROP_KEYBOARD_GRAB,
--                                       g_param_spec_boolean ( "grab-keyboard",
--                                                              "Grab Keyboard",
--                                                              "Whether we should grab the keyboard",
--                                                              FALSE,
--                                                              G_PARAM_READWRITE |
--                                                              G_PARAM_CONSTRUCT |
--                                                              G_PARAM_STATIC_NAME |
--                                                              G_PARAM_STATIC_NICK |
--                                                              G_PARAM_STATIC_BLURB));
--      g_object_class_install_property (object_class,
--                                       PROP_READ_ONLY,
--                                       g_param_spec_boolean ( "read-only",
--                                                              "Read Only",
--                                                              "Whether this connection is read-only mode",
--                                                              FALSE,
--                                                              G_PARAM_READWRITE |
--                                                              G_PARAM_CONSTRUCT |
--                                                              G_PARAM_STATIC_NAME |
--                                                              G_PARAM_STATIC_NICK |
--                                                              G_PARAM_STATIC_BLURB));
--      g_object_class_install_property (object_class,
--                                       PROP_WIDTH,
--                                       g_param_spec_int     ( "width",
--                                                              "Width",
--                                                              "The width of the remote screen",
--                                                              0,
--                                                              G_MAXINT,
--                                                              0,
--                                                              G_PARAM_READABLE |
--                                                              G_PARAM_STATIC_NAME |
--                                                              G_PARAM_STATIC_NICK |
--                                                              G_PARAM_STATIC_BLURB));
--      g_object_class_install_property (object_class,
--                                       PROP_HEIGHT,
--                                       g_param_spec_int     ( "height",
--                                                              "Height",
--                                                              "The height of the remote screen",
--                                                              0,
--                                                              G_MAXINT,
--                                                              0,
--                                                              G_PARAM_READABLE |
--                                                              G_PARAM_STATIC_NAME |
--                                                              G_PARAM_STATIC_NICK |
--                                                              G_PARAM_STATIC_BLURB));
--      g_object_class_install_property (object_class,
--                                       PROP_NAME,
--                                       g_param_spec_string  ( "name",
--                                                              "Name",
--                                                              "The screen name of the remote connection",
--                                                              NULL,
--                                                              G_PARAM_READABLE |
--                                                              G_PARAM_STATIC_NAME |
--                                                              G_PARAM_STATIC_NICK |
--                                                              G_PARAM_STATIC_BLURB));
--      g_object_class_install_property (object_class,
--                                       PROP_LOSSY_ENCODING,
--                                       g_param_spec_boolean ( "lossy-encoding",
--                                                              "Lossy Encoding",
--                                                              "Whether we should use a lossy encoding",
--                                                              FALSE,
--                                                              G_PARAM_READWRITE |
--                                                              G_PARAM_CONSTRUCT |
--                                                              G_PARAM_STATIC_NAME |
--                                                              G_PARAM_STATIC_NICK |
--                                                              G_PARAM_STATIC_BLURB));
--      g_object_class_install_property (object_class,
--                                       PROP_SCALING,
--                                       g_param_spec_boolean ( "scaling",
--                                                              "Scaling",
--                                                              "Whether we should use scaling",
--                                                              FALSE,
--                                                              G_PARAM_READWRITE |
--                                                              G_PARAM_CONSTRUCT |
--                                                              G_PARAM_STATIC_NAME |
--                                                              G_PARAM_STATIC_NICK |
--                                                              G_PARAM_STATIC_BLURB));
--      g_object_class_install_property (object_class,
--                                       PROP_SHARED_FLAG,
--                                       g_param_spec_boolean ( "shared-flag",
--                                                              "Shared Flag",
--                                                              "Whether we should leave other clients connected to the server",
--                                                              FALSE,
--                                                              G_PARAM_READWRITE |
--                                                              G_PARAM_CONSTRUCT |
--                                                              G_PARAM_STATIC_NAME |
--                                                              G_PARAM_STATIC_NICK |
--                                                              G_PARAM_STATIC_BLURB));
--      g_object_class_install_property (object_class,
--                                       PROP_FORCE_SIZE,
--                                       g_param_spec_boolean ( "force-size",
--                                                              "Force widget size",
--                                                              "Whether we should define the widget size",
--                                                              TRUE,
--                                                              G_PARAM_READWRITE |
--                                                              G_PARAM_CONSTRUCT |
--                                                              G_PARAM_STATIC_NAME |
--                                                              G_PARAM_STATIC_NICK |
--                                                              G_PARAM_STATIC_BLURB));
--
--      signalCredParam = g_param_spec_enum("credential",
--                                          "credential",
--                                          "credential",
--                                          vnc_display_credential_get_type(),
--                                          0,
--                                          G_PARAM_READABLE);
--
--      signals[VNC_CONNECTED] =
--              g_signal_new ("vnc-connected",
--                            G_OBJECT_CLASS_TYPE (object_class),
--                            G_SIGNAL_RUN_FIRST,
--                            G_STRUCT_OFFSET (VncDisplayClass, vnc_connected),
--                            NULL, NULL,
--                            g_cclosure_marshal_VOID__VOID,
--                            G_TYPE_NONE,
--                            0);
--
--      signals[VNC_INITIALIZED] =
--              g_signal_new ("vnc-initialized",
--                            G_OBJECT_CLASS_TYPE (object_class),
--                            G_SIGNAL_RUN_FIRST,
--                            G_STRUCT_OFFSET (VncDisplayClass, vnc_initialized),
--                            NULL, NULL,
--                            g_cclosure_marshal_VOID__VOID,
--                            G_TYPE_NONE,
--                            0);
--
--      signals[VNC_DISCONNECTED] =
--              g_signal_new ("vnc-disconnected",
--                            G_OBJECT_CLASS_TYPE (object_class),
--                            G_SIGNAL_RUN_FIRST,
--                            G_STRUCT_OFFSET (VncDisplayClass, vnc_disconnected),
--                            NULL, NULL,
--                            g_cclosure_marshal_VOID__VOID,
--                            G_TYPE_NONE,
--                            0);
--
--      signals[VNC_AUTH_CREDENTIAL] =
--              g_signal_new ("vnc-auth-credential",
--                            G_OBJECT_CLASS_TYPE (object_class),
--                            G_SIGNAL_RUN_FIRST,
--                            G_STRUCT_OFFSET (VncDisplayClass, vnc_auth_credential),
--                            NULL, NULL,
--                            g_cclosure_marshal_VOID__BOXED,
--                            G_TYPE_NONE,
--                            1,
--                            G_TYPE_VALUE_ARRAY);
--
--
--      signals[VNC_POINTER_GRAB] =
--              g_signal_new("vnc-pointer-grab",
--                           G_TYPE_FROM_CLASS(klass),
--                           G_SIGNAL_RUN_LAST | G_SIGNAL_NO_HOOKS,
--                           0,
--                           NULL,
--                           NULL,
--                           g_cclosure_marshal_VOID__VOID,
--                           G_TYPE_NONE,
--                           0);
--
--      signals[VNC_POINTER_UNGRAB] =
--              g_signal_new("vnc-pointer-ungrab",
--                           G_TYPE_FROM_CLASS(klass),
--                           G_SIGNAL_RUN_LAST | G_SIGNAL_NO_HOOKS,
--                           0,
--                           NULL,
--                           NULL,
--                           g_cclosure_marshal_VOID__VOID,
--                           G_TYPE_NONE,
--                           0);
--
--      signals[VNC_KEYBOARD_GRAB] =
--              g_signal_new("vnc-keyboard-grab",
--                           G_TYPE_FROM_CLASS(klass),
--                           G_SIGNAL_RUN_LAST | G_SIGNAL_NO_HOOKS,
--                           0,
--                           NULL,
--                           NULL,
--                           g_cclosure_marshal_VOID__VOID,
--                           G_TYPE_NONE,
--                           0);
--
--      signals[VNC_KEYBOARD_UNGRAB] =
--              g_signal_new("vnc-keyboard-ungrab",
--                           G_TYPE_FROM_CLASS(klass),
--                           G_SIGNAL_RUN_LAST | G_SIGNAL_NO_HOOKS,
--                           0,
--                           NULL,
--                           NULL,
--                           g_cclosure_marshal_VOID__VOID,
--                           G_TYPE_NONE,
--                           0);
--
--
--      signals[VNC_DESKTOP_RESIZE] =
--              g_signal_new("vnc-desktop-resize",
--                           G_TYPE_FROM_CLASS(klass),
--                           G_SIGNAL_RUN_LAST | G_SIGNAL_NO_HOOKS,
--                           0,
--                           NULL,
--                           NULL,
--                           g_cclosure_user_marshal_VOID__INT_INT,
--                           G_TYPE_NONE,
--                           2,
--                           G_TYPE_INT, G_TYPE_INT);
--
--      signals[VNC_AUTH_FAILURE] =
--              g_signal_new("vnc-auth-failure",
--                           G_TYPE_FROM_CLASS(klass),
--                           G_SIGNAL_RUN_LAST | G_SIGNAL_NO_HOOKS,
--                           0,
--                           NULL,
--                           NULL,
--                           g_cclosure_marshal_VOID__STRING,
--                           G_TYPE_NONE,
--                           1,
--                           G_TYPE_STRING);
--
--      signals[VNC_AUTH_UNSUPPORTED] =
--              g_signal_new("vnc-auth-unsupported",
--                           G_TYPE_FROM_CLASS(klass),
--                           G_SIGNAL_RUN_LAST | G_SIGNAL_NO_HOOKS,
--                           0,
--                           NULL,
--                           NULL,
--                           g_cclosure_marshal_VOID__UINT,
--                           G_TYPE_NONE,
--                           1,
--                           G_TYPE_UINT);
--
--      signals[VNC_SERVER_CUT_TEXT] =
--              g_signal_new("vnc-server-cut-text",
--                           G_TYPE_FROM_CLASS(klass),
--                           G_SIGNAL_RUN_LAST | G_SIGNAL_NO_HOOKS,
--                           0,
--                           NULL,
--                           NULL,
--                           g_cclosure_marshal_VOID__STRING,
--                           G_TYPE_NONE,
--                           1,
--                           G_TYPE_STRING);
--
--      signals[VNC_BELL] =
--              g_signal_new("vnc-bell",
--                           G_TYPE_FROM_CLASS(klass),
--                           G_SIGNAL_RUN_LAST | G_SIGNAL_NO_HOOKS,
--                           0,
--                           NULL,
--                           NULL,
--                           g_cclosure_marshal_VOID__VOID,
--                           G_TYPE_NONE,
--                           0);
--
--      g_type_class_add_private(klass, sizeof(VncDisplayPrivate));
--}
--
--static void vnc_display_init(VncDisplay *display)
--{
--      GtkObject *obj = GTK_OBJECT(display);
--      GtkWidget *widget = GTK_WIDGET(display);
--      VncDisplayPrivate *priv;
--
--      GTK_WIDGET_SET_FLAGS(obj, GTK_CAN_FOCUS);
--
--      gtk_widget_add_events(widget,
--                            GDK_POINTER_MOTION_MASK |
--                            GDK_BUTTON_PRESS_MASK |
--                            GDK_BUTTON_RELEASE_MASK |
--                            GDK_BUTTON_MOTION_MASK |
--                            GDK_ENTER_NOTIFY_MASK |
--                            GDK_LEAVE_NOTIFY_MASK |
--                            GDK_SCROLL_MASK |
--                            GDK_KEY_PRESS_MASK);
--      gtk_widget_set_double_buffered(widget, FALSE);
--
--      priv = display->priv = VNC_DISPLAY_GET_PRIVATE(display);
--      memset(priv, 0, sizeof(VncDisplayPrivate));
--      priv->last_x = -1;
--      priv->last_y = -1;
--      priv->absolute = 1;
--      priv->fd = -1;
--      priv->read_only = FALSE;
--      priv->allow_lossy = FALSE;
--      priv->allow_scaling = FALSE;
--      priv->grab_pointer = FALSE;
--      priv->grab_keyboard = FALSE;
--      priv->local_pointer = FALSE;
--      priv->shared_flag = FALSE;
--      priv->force_size = TRUE;
--
--      priv->preferable_auths = g_slist_append (priv->preferable_auths, GUINT_TO_POINTER (GVNC_AUTH_VENCRYPT));
--      priv->preferable_auths = g_slist_append (priv->preferable_auths, GUINT_TO_POINTER (GVNC_AUTH_TLS));
--      priv->preferable_auths = g_slist_append (priv->preferable_auths, GUINT_TO_POINTER (GVNC_AUTH_VNC));
--      priv->preferable_auths = g_slist_append (priv->preferable_auths, GUINT_TO_POINTER (GVNC_AUTH_NONE));
--
--#if WITH_GTKGLEXT
--      if (gtk_gl_init_check(NULL, NULL)) {
--              priv->gl_config = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGB |
--                                                          GDK_GL_MODE_DEPTH);
--              if (!gtk_widget_set_gl_capability(widget,
--                                                priv->gl_config,
--                                                NULL,
--                                                TRUE,
--                                                GDK_GL_RGBA_TYPE)) {
--                      g_warning("Could not enable OpenGL");
--                      g_object_unref(G_OBJECT(priv->gl_config));
--                      priv->gl_config = NULL;
--              }
--      } else
--              priv->gl_config = NULL;
--#endif
--
--      priv->gvnc = gvnc_new(&vnc_display_ops, obj);
--}
--
--static int vnc_display_best_path(char *buf,
--                               int buflen,
--                               const char *basedir,
--                               const char *basefile,
--                               char **dirs,
--                               unsigned int ndirs)
--{
--      unsigned int i;
--      for (i = 0 ; i < ndirs ; i++) {
--              struct stat sb;
--              snprintf(buf, buflen-1, "%s/%s/%s", dirs[i], basedir, basefile);
--              buf[buflen-1] = '\0';
--              if (stat(buf, &sb) == 0)
--                      return 0;
--      }
--      return -1;
--}
--
--static int vnc_display_set_x509_credential(VncDisplay *obj, const char *name)
--{
--      char sysdir[PATH_MAX], userdir[PATH_MAX];
--      struct passwd *pw;
--      char file[PATH_MAX];
--      char *dirs[] = { sysdir, userdir };
--
--      strncpy(sysdir, SYSCONFDIR "/pki", PATH_MAX-1);
--      sysdir[PATH_MAX-1] = '\0';
--
--      if (!(pw = getpwuid(getuid())))
--              return TRUE;
--
--      snprintf(userdir, PATH_MAX-1, "%s/.pki", pw->pw_dir);
--      userdir[PATH_MAX-1] = '\0';
--
--      if (vnc_display_best_path(file, PATH_MAX, "CA", "cacert.pem", dirs, 2) < 0)
--              return TRUE;
--      gvnc_set_credential_x509_cacert(obj->priv->gvnc, file);
--
--      /* Don't mind failures of CRL */
--      if (vnc_display_best_path(file, PATH_MAX, "CA", "cacrl.pem", dirs, 2) == 0)
--              gvnc_set_credential_x509_cacert(obj->priv->gvnc, file);
--
--      /* Set client key & cert if we have them. Server will reject auth
--       * if it decides it requires them*/
--      if (vnc_display_best_path(file, PATH_MAX, name, "private/clientkey.pem", dirs, 2) == 0)
--              gvnc_set_credential_x509_key(obj->priv->gvnc, file);
--      if (vnc_display_best_path(file, PATH_MAX, name, "clientcert.pem", dirs, 2) == 0)
--              gvnc_set_credential_x509_cert(obj->priv->gvnc, file);
--
--      return FALSE;
--}
--
--gboolean vnc_display_set_credential(VncDisplay *obj, int type, const gchar *data)
--{
--      switch (type) {
--      case VNC_DISPLAY_CREDENTIAL_PASSWORD:
--              if (gvnc_set_credential_password(obj->priv->gvnc, data))
--                      return FALSE;
--              return TRUE;
--
--      case VNC_DISPLAY_CREDENTIAL_USERNAME:
--              if (gvnc_set_credential_username(obj->priv->gvnc, data))
--                      return FALSE;
--              return TRUE;
--
--      case VNC_DISPLAY_CREDENTIAL_CLIENTNAME:
--              return vnc_display_set_x509_credential(obj, data);
--      }
--
--      return FALSE;
--}
--
--void vnc_display_set_pointer_local(VncDisplay *obj, gboolean enable)
--{
--      if (obj->priv->gc) {
--              if (enable)
--                      do_pointer_show(obj);
--              else if (obj->priv->in_pointer_grab || obj->priv->absolute)
--                      do_pointer_hide(obj);
--      }
--      obj->priv->local_pointer = enable;
--}
--
--void vnc_display_set_pointer_grab(VncDisplay *obj, gboolean enable)
--{
--      VncDisplayPrivate *priv = obj->priv;
--
--      priv->grab_pointer = enable;
--      if (!enable && priv->absolute && priv->in_pointer_grab)
--              do_pointer_ungrab(obj, FALSE);
--}
--
--void vnc_display_set_keyboard_grab(VncDisplay *obj, gboolean enable)
--{
--      VncDisplayPrivate *priv = obj->priv;
--
--      priv->grab_keyboard = enable;
--      if (!enable && priv->in_keyboard_grab && !priv->in_pointer_grab)
--              do_keyboard_ungrab(obj, FALSE);
--}
--
--void vnc_display_set_read_only(VncDisplay *obj, gboolean enable)
--{
--      obj->priv->read_only = enable;
--}
--
--GType vnc_display_credential_get_type(void)
--{
--      static GType etype = 0;
--
--      if (etype == 0) {
--              static const GEnumValue values[] = {
--                      { VNC_DISPLAY_CREDENTIAL_PASSWORD, "VNC_DISPLAY_CREDENTIAL_PASSWORD", "password" },
--                      { VNC_DISPLAY_CREDENTIAL_USERNAME, "VNC_DISPLAY_CREDENTIAL_USERNAME", "username" },
--                      { VNC_DISPLAY_CREDENTIAL_CLIENTNAME, "VNC_DISPLAY_CREDENTIAL_CLIENTNAME", "clientname" },
--                      { 0, NULL, NULL }
--              };
--              etype = g_enum_register_static ("VncDisplayCredentialType", values );
--      }
--
--      return etype;
--}
--
--GType vnc_display_key_event_get_type(void)
--{
--      static GType etype = 0;
--
--      if (etype == 0) {
--              static const GEnumValue values[] = {
--                      { VNC_DISPLAY_KEY_EVENT_PRESS, "VNC_DISPLAY_KEY_EVENT_PRESS", "press" },
--                      { VNC_DISPLAY_KEY_EVENT_RELEASE, "VNC_DISPLAY_KEY_EVENT_RELEASE", "release" },
--                      { VNC_DISPLAY_KEY_EVENT_CLICK, "VNC_DISPLAY_KEY_EVENT_CLICK", "click" },
--                      { 0, NULL, NULL }
--              };
--              etype = g_enum_register_static ("VncDisplayKeyEvents", values );
--      }
--
--      return etype;
--}
--
--GdkPixbuf *vnc_display_get_pixbuf(VncDisplay *obj)
--{
--      VncDisplayPrivate *priv = obj->priv;
--      GdkPixbuf *pixbuf;
--
--      if (!priv->gvnc ||
--          !gvnc_is_initialized(priv->gvnc))
--              return NULL;
--
--      pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8,
--                              priv->image->width, priv->image->height);
--
--      if (!gdk_pixbuf_get_from_image(pixbuf,
--                                     priv->image,
--                                     gdk_colormap_get_system(),
--                                     0, 0, 0, 0,
--                                     priv->image->width,
--                                     priv->image->height))
--              return NULL;
--
--      return pixbuf;
--}
--
--
--int vnc_display_get_width(VncDisplay *obj)
--{
--      g_return_val_if_fail (VNC_IS_DISPLAY (obj), -1);
--
--      return gvnc_get_width (obj->priv->gvnc);
--}
--
--int vnc_display_get_height(VncDisplay *obj)
--{
--      g_return_val_if_fail (VNC_IS_DISPLAY (obj), -1);
--
--      return gvnc_get_height (obj->priv->gvnc);
--}
--
--const char * vnc_display_get_name(VncDisplay *obj)
--{
--      g_return_val_if_fail (VNC_IS_DISPLAY (obj), NULL);
--
--      return gvnc_get_name (obj->priv->gvnc);
--}
--
--void vnc_display_client_cut_text(VncDisplay *obj, const gchar *text)
--{
--      g_return_if_fail (VNC_IS_DISPLAY (obj));
--
--      gvnc_client_cut_text(obj->priv->gvnc, text, strlen (text));
--}
--
--void vnc_display_set_lossy_encoding(VncDisplay *obj, gboolean enable)
--{
--      g_return_if_fail (VNC_IS_DISPLAY (obj));
--      obj->priv->allow_lossy = enable;
--}
--
--void vnc_display_set_shared_flag(VncDisplay *obj, gboolean shared)
--{
--      g_return_if_fail (VNC_IS_DISPLAY (obj));
--      obj->priv->shared_flag = shared;
--}
--
--#if WITH_GTKGLEXT
--gboolean vnc_display_set_scaling(VncDisplay *obj, gboolean enable)
--{
--      GtkWidget *widget = GTK_WIDGET(obj);
--      gint width, height;
--
--      g_return_val_if_fail (VNC_IS_DISPLAY (obj), FALSE);
--      if (obj->priv->gl_config == NULL)
--              return FALSE;
--      
--      obj->priv->allow_scaling = enable;
--      if (gvnc_is_open(obj->priv->gvnc) && widget->window) {
--              gdk_drawable_get_size(widget->window, &width, &height);
--              rescale_display(obj, width, height);
--              gtk_widget_queue_draw_area(widget, 0, 0, width, height);
--      }
--
--      return TRUE;
--}
--#else
--gboolean vnc_display_set_scaling(VncDisplay *obj G_GNUC_UNUSED,
--      gboolean enable G_GNUC_UNUSED)
--{
--      return FALSE;
--}
--#endif
--
--void vnc_display_set_force_size(VncDisplay *obj, gboolean enabled)
--{
--      g_return_if_fail (VNC_IS_DISPLAY (obj));
--      obj->priv->force_size = enabled;
--}
--
--gboolean vnc_display_get_force_size(VncDisplay *obj)
--{
--      g_return_val_if_fail (VNC_IS_DISPLAY (obj), FALSE);
--
--      return obj->priv->force_size;
--}
--
--gboolean vnc_display_get_scaling(VncDisplay *obj)
--{
--      g_return_val_if_fail (VNC_IS_DISPLAY (obj), FALSE);
--
--      return obj->priv->allow_scaling;
--}
--
--gboolean vnc_display_get_lossy_encoding(VncDisplay *obj)
--{
--      g_return_val_if_fail (VNC_IS_DISPLAY (obj), FALSE);
--
--      return obj->priv->allow_lossy;
--}
--
--gboolean vnc_display_get_shared_flag(VncDisplay *obj)
--{
--      g_return_val_if_fail (VNC_IS_DISPLAY (obj), FALSE);
--
--      return obj->priv->shared_flag;
--}
--
--gboolean vnc_display_get_pointer_local(VncDisplay *obj)
--{
--      g_return_val_if_fail (VNC_IS_DISPLAY (obj), FALSE);
--
--      return obj->priv->local_pointer;
--}
--
--gboolean vnc_display_get_pointer_grab(VncDisplay *obj)
--{
--      g_return_val_if_fail (VNC_IS_DISPLAY (obj), FALSE);
--
--      return obj->priv->grab_pointer;
--}
--
--gboolean vnc_display_get_keyboard_grab(VncDisplay *obj)
--{
--      g_return_val_if_fail (VNC_IS_DISPLAY (obj), FALSE);
--
--      return obj->priv->grab_keyboard;
--}
--
--gboolean vnc_display_get_read_only(VncDisplay *obj)
--{
--      g_return_val_if_fail (VNC_IS_DISPLAY (obj), FALSE);
--
--      return obj->priv->read_only;
--}
--
--gboolean vnc_display_is_pointer_absolute(VncDisplay *obj)
--{
--      return obj->priv->absolute;
--}
--
--GOptionGroup *
--vnc_display_get_option_group (void)
--{
--  GOptionGroup *group;
--
--  group = g_option_group_new ("gtk-vnc", "GTK-VNC Options", "Show GTK-VNC Options", NULL, NULL);
--
--  g_option_group_add_entries (group, gtk_vnc_args);
--  
--  return group;
--}
--
--/*
-- * Local variables:
-- *  c-indent-level: 8
-- *  c-basic-offset: 8
-- *  tab-width: 8
-- * End:
-- */
-diff -urN gtk-vnc-0.3.7/vc-list-files gtk-vnc-0.3.7.mingw/vc-list-files
---- gtk-vnc-0.3.7/vc-list-files        1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.mingw/vc-list-files  2008-10-09 12:19:03.000000000 +0100
-@@ -0,0 +1,107 @@
-+#!/bin/sh
-+# List version-controlled file names.
-+
-+# Print a version string.
-+scriptversion=2008-07-11.19
-+
-+# Copyright (C) 2006-2008 Free Software Foundation, Inc.
-+
-+# This program is free software: you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation, either version 3 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-+
-+
-+# List the specified version-controlled files.
-+# With no argument, list them all.  With a single DIRECTORY argument,
-+# list the version-controlled files in that directory.
-+
-+# If there's an argument, it must be a single, "."-relative directory name.
-+# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
-+
-+postprocess=
-+case $1 in
-+  --help) cat <<EOF
-+Usage: $0 [-C SRCDIR] [DIR]
-+
-+Output a list of version-controlled files in DIR (default .), relative to
-+SRCDIR (default .).  SRCDIR must be the top directory of a checkout.
-+
-+Options:
-+  --help     print this help, then exit
-+  --version  print version number, then exit
-+  -C SRCDIR  change directory to SRCDIR before generating list
-+
-+Report bugs and patches to <bug-gnulib@gnu.org>.
-+EOF
-+    exit ;;
-+
-+  --version)
-+    year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
-+    cat <<EOF
-+vc-list-files $scriptversion
-+Copyright (C) $year Free Software Foundation, Inc,
-+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
-+This is free software: you are free to change and redistribute it.
-+There is NO WARRANTY, to the extent permitted by law.
-+EOF
-+    exit ;;
-+
-+  -C)
-+    test "$2" = . || postprocess="| sed 's|^|$2/|'"
-+    cd "$2" || exit 1
-+    shift; shift ;;
-+esac
-+
-+dir=
-+case $# in
-+  0) ;;
-+  1) dir=$1 ;;
-+  *) echo "$0: too many arguments" 1>&2
-+     echo "Usage: $0 [-C srcdir] [DIR]" 1>&2; exit 1;;
-+esac
-+
-+test "x$dir" = x && dir=.
-+
-+if test -d .git; then
-+  eval exec git ls-files '"$dir"' $postprocess
-+elif test -d .hg; then
-+  eval exec hg locate '"$dir/*"' $postprocess
-+elif test -d .bzr; then
-+  test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
-+  eval exec bzr ls --versioned '"$dir"' $postprocess
-+elif test -d CVS; then
-+  test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
-+  if test -x build-aux/cvsu; then
-+    eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
-+  elif (cvsu --help) >/dev/null 2>&1; then
-+    eval cvsu --find --types=AFGM '"$dir"' $postprocess
-+  else
-+    eval awk -F/ \''{                 \
-+      if (!$1 && $3 !~ /^-/) {        \
-+        f=FILENAME;                   \
-+        if (f ~ /CVS\/Entries$/)      \
-+          f = substr(f, 0, length(f)-11); \
-+        print f $2;                   \
-+      }}'\''                          \
-+      `find "$dir" -name Entries -print` /dev/null' $postprocess
-+  fi
-+else
-+  echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
-+  exit 1
-+fi
-+
-+# Local variables:
-+# eval: (add-hook 'write-file-hooks 'time-stamp)
-+# time-stamp-start: "scriptversion="
-+# time-stamp-format: "%:y-%02m-%02d.%02H"
-+# time-stamp-end: "$"
-+# End:
diff --git a/gtk-vnc/gtk-vnc-0.3.7-mingw32-dan3.patch b/gtk-vnc/gtk-vnc-0.3.7-mingw32-dan3.patch
new file mode 100644 (file)
index 0000000..f81db38
--- /dev/null
@@ -0,0 +1,702 @@
+diff -urN gtk-vnc-0.3.7.abs/bootstrap gtk-vnc-0.3.7.dan3/bootstrap
+--- gtk-vnc-0.3.7.abs/bootstrap        1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.dan3/bootstrap       2008-10-09 15:23:00.000000000 +0100
+@@ -0,0 +1,89 @@
++#!/bin/sh
++# Run this after autogen.sh, to pull in all of the gnulib-related bits.
++# It's important to run *after* autogen.sh, since it updates some of
++# the same files autogen.sh does, yet those from gnulib are newer,
++# and match the tests.  So if a gnulib bug has been fixed since the
++# snapshot taken for whatever gettext release you're using, yet you
++# run "make check" against the wrong version, the corresponding unit
++# test in gl-tests/ may well fail.
++
++usage() {
++  echo >&2 "\
++Usage: $0 [OPTION]...
++Bootstrap this package from the checked-out sources.
++
++Options:
++ --gnulib-srcdir=DIRNAME  Specify the local directory where gnulib
++                          sources reside.  Use this if you already
++                          have gnulib sources on your machine, and
++                          do not want to waste your bandwidth downloading
++                          them again.
++
++If the file bootstrap.conf exists in the current working directory, its
++contents are read as shell variables to configure the bootstrap.
++
++Running without arguments will suffice in most cases.
++"
++}
++
++for option
++do
++  case $option in
++  --help)
++    usage
++    exit;;
++  --gnulib-srcdir=*)
++    GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
++  *)
++    echo >&2 "$0: $option: unknown option"
++    exit 1;;
++  esac
++done
++
++cleanup_gnulib() {
++  st=$?
++  rm -fr .gnulib
++  exit $st
++}
++
++case ${GNULIB_SRCDIR--} in
++-)
++  if [ ! -d .gnulib ]; then
++    echo "$0: getting gnulib files..."
++
++    trap cleanup_gnulib 1 2 13 15
++
++    git clone --depth 1 git://git.sv.gnu.org/gnulib .gnulib ||
++      cleanup_gnulib
++
++    trap - 1 2 13 15
++  fi
++  GNULIB_SRCDIR=.gnulib
++esac
++
++gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
++<$gnulib_tool || exit
++
++modules='
++getaddrinfo
++socket
++recv
++send
++connect
++malloc
++vc-list-files
++'
++
++# Tell gnulib to:
++#   require LGPLv2+
++#   put *.m4 files in new gnulib/m4/ dir
++#   put *.[ch] files in new gnulib/lib/ dir.
++
++$gnulib_tool                  \
++  --lgpl=2                    \
++  --with-tests                        \
++  --m4-base=gnulib/m4         \
++  --source-base=gnulib/lib    \
++  --tests-base=gnulib/tests   \
++  --import $modules
++
+diff -urN gtk-vnc-0.3.7.abs/configure.ac gtk-vnc-0.3.7.dan3/configure.ac
+--- gtk-vnc-0.3.7.abs/configure.ac     2008-09-05 13:32:15.000000000 +0100
++++ gtk-vnc-0.3.7.dan3/configure.ac    2008-10-09 15:23:00.000000000 +0100
+@@ -23,15 +23,29 @@
+ AC_CONFIG_HEADERS([config.h:config.hin])
+-
+ AC_CANONICAL_TARGET
+ AM_INIT_AUTOMAKE(gtk-vnc, 0.3.7)
++
++dnl gl_INIT uses m4_foreach_w, yet that is not defined in autoconf-2.59.
++dnl In order to accommodate developers with such old tools, here's a
++dnl replacement definition.
++m4_ifndef([m4_foreach_w],
++  [m4_define([m4_foreach_w],
++    [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])])
++
++gl_EARLY
++gl_INIT
++
+ AC_PROG_CC_STDC
+ AM_PROG_CC_C_O
++AC_LIBTOOL_WIN32_DLL
++
+ AC_PROG_LIBTOOL
++AC_CHECK_HEADERS([pwd.h winsock2.h])
++
+ AC_ARG_WITH(python,
+ [  --with-python           build python bindings],
+ [case "${withval}" in
+@@ -234,6 +248,8 @@
+ AC_CONFIG_FILES(
+   Makefile
++  gnulib/lib/Makefile
++  gnulib/tests/Makefile
+   src/Makefile
+   examples/Makefile
+   plugin/Makefile
+diff -urN gtk-vnc-0.3.7.abs/Makefile.am gtk-vnc-0.3.7.dan3/Makefile.am
+--- gtk-vnc-0.3.7.abs/Makefile.am      2008-09-05 13:32:15.000000000 +0100
++++ gtk-vnc-0.3.7.dan3/Makefile.am     2008-10-09 15:22:57.000000000 +0100
+@@ -1,5 +1,9 @@
+-SUBDIRS = src examples plugin
++SUBDIRS = gnulib/lib src examples plugin gnulib/tests
++
++ACLOCAL_AMFLAGS = -I gnulib/m4
++
++
+ pkgconfig_DATA = @PACKAGE@-1.0.pc
+ pkgconfigdir = $(libdir)/pkgconfig
+diff -urN gtk-vnc-0.3.7.abs/src/continuation.c gtk-vnc-0.3.7.dan3/src/continuation.c
+--- gtk-vnc-0.3.7.abs/src/continuation.c       2008-09-05 13:32:16.000000000 +0100
++++ gtk-vnc-0.3.7.dan3/src/continuation.c      2008-10-09 15:23:00.000000000 +0100
+@@ -8,6 +8,8 @@
+  *  GTK VNC Widget
+  */
++#include <config.h>
++
+ #include "continuation.h"
+ /*
+diff -urN gtk-vnc-0.3.7.abs/src/coroutine_gthread.c gtk-vnc-0.3.7.dan3/src/coroutine_gthread.c
+--- gtk-vnc-0.3.7.abs/src/coroutine_gthread.c  2008-09-05 13:32:16.000000000 +0100
++++ gtk-vnc-0.3.7.dan3/src/coroutine_gthread.c 2008-10-09 15:23:00.000000000 +0100
+@@ -8,6 +8,8 @@
+  *  GTK VNC Widget
+  */
++#include <config.h>
++
+ #include "coroutine.h"
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -17,13 +19,24 @@
+ static struct coroutine *current;
+ static struct coroutine leader;
++#if 0
++#define CO_DEBUG(OP) fprintf(stderr, "%s %p %s %d\n", OP, g_thread_self(), __FUNCTION__, __LINE__)
++#else
++#define CO_DEBUG(OP)
++#endif
++
+ static void coroutine_system_init(void)
+ {
+-      if (!g_thread_supported())
++      if (!g_thread_supported()) {
++              CO_DEBUG("INIT");
+               g_thread_init(NULL);
++      }
++
+       run_cond = g_cond_new();
+       run_lock = g_mutex_new();
++      CO_DEBUG("LOCK");
++      g_mutex_lock(run_lock);
+       /* The thread that creates the first coroutine is the system coroutine
+        * so let's fill out a structure for it */
+@@ -42,17 +55,22 @@
+ static gpointer coroutine_thread(gpointer opaque)
+ {
+       struct coroutine *co = opaque;
+-
++      CO_DEBUG("LOCK");
+       g_mutex_lock(run_lock);
+-      while (!co->runnable)
++      while (!co->runnable) {
++              CO_DEBUG("WAIT");
+               g_cond_wait(run_cond, run_lock);
++      }
++      CO_DEBUG("RUNNABLE");
+       current = co;
+       co->data = co->entry(co->data);
+       co->exited = 1;
+       co->caller->runnable = TRUE;
++      CO_DEBUG("BROADCAST");
+       g_cond_broadcast(run_cond);
++      CO_DEBUG("UNLOCK");
+       g_mutex_unlock(run_lock);
+       return NULL;
+@@ -62,7 +80,8 @@
+ {
+       if (run_cond == NULL)
+               coroutine_system_init();
+-      
++
++      CO_DEBUG("NEW");
+       co->thread = g_thread_create_full(coroutine_thread, co, co->stack_size,
+                                         FALSE, TRUE,
+                                         G_THREAD_PRIORITY_NORMAL,
+@@ -88,15 +107,19 @@
+       to->runnable = TRUE;
+       to->data = arg;
+       to->caller = from;
++      CO_DEBUG("BROADCAST");
+       g_cond_broadcast(run_cond);
++      CO_DEBUG("UNLOCK");
+       g_mutex_unlock(run_lock);
+-
++      CO_DEBUG("LOCK");
+       g_mutex_lock(run_lock);
+-      while (!from->runnable)
++      while (!from->runnable) {
++              CO_DEBUG("WAIT");
+               g_cond_wait(run_cond, run_lock);
+-
++      }
+       current = from;
++      CO_DEBUG("SWAPPED");
+       return from->data;
+ }
+@@ -111,6 +134,7 @@
+               fprintf(stderr, "Co-routine is re-entering itself\n");
+               abort();
+       }
++      CO_DEBUG("SWAP");
+       return coroutine_swap(coroutine_self(), to, arg);
+ }
+@@ -121,6 +145,8 @@
+               fprintf(stderr, "Co-routine is yielding to no one\n");
+               abort();
+       }
++
++      CO_DEBUG("SWAP");
+       coroutine_self()->caller = NULL;
+       return coroutine_swap(coroutine_self(), to, arg);
+ }
+diff -urN gtk-vnc-0.3.7.abs/src/coroutine_ucontext.c gtk-vnc-0.3.7.dan3/src/coroutine_ucontext.c
+--- gtk-vnc-0.3.7.abs/src/coroutine_ucontext.c 2008-09-05 13:32:16.000000000 +0100
++++ gtk-vnc-0.3.7.dan3/src/coroutine_ucontext.c        2008-10-09 15:23:00.000000000 +0100
+@@ -8,6 +8,8 @@
+  *  GTK VNC Widget
+  */
++#include <config.h>
++
+ #include <sys/types.h>
+ #include <sys/mman.h>
+ #include <stdio.h>
+diff -urN gtk-vnc-0.3.7.abs/src/gvnc.c gtk-vnc-0.3.7.dan3/src/gvnc.c
+--- gtk-vnc-0.3.7.abs/src/gvnc.c       2008-09-05 13:32:16.000000000 +0100
++++ gtk-vnc-0.3.7.dan3/src/gvnc.c      2008-10-09 15:23:00.000000000 +0100
+@@ -8,13 +8,14 @@
+  *  GTK VNC Widget
+  */
++#include <config.h>
++
+ #include "gvnc.h"
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+-#include <netdb.h>
+ #include <string.h>
+ #include <unistd.h>
+ #include <stdio.h>
+@@ -40,6 +41,14 @@
+ #include <gdk/gdkkeysyms.h>
+ #include "vnc_keycodes.h"
++#include "getaddrinfo.h"
++
++/* AI_ADDRCONFIG is missing on some systems and gnulib won't provide it
++   even if its emulated getaddrinfo() for us . */
++#ifndef AI_ADDRCONFIG
++# define AI_ADDRCONFIG 0
++#endif
++
+ struct wait_queue
+ {
+@@ -185,7 +194,6 @@
+       g_io_add_watch(channel, cond | G_IO_HUP | G_IO_ERR | G_IO_NVAL, g_io_wait_helper, coroutine_self());
+       ret = coroutine_yield(NULL);
+-
+       return *ret;
+ }
+@@ -344,7 +352,7 @@
+       size_t offset = 0;
+       if (gvnc->has_error) return -EINVAL;
+-      
++
+       while (offset < len) {
+               size_t tmp;
+@@ -376,7 +384,7 @@
+                       if (ret == -1) {
+                               switch (errno) {
+-                              case EAGAIN:
++                              case EWOULDBLOCK:
+                                       if (gvnc->wait_interruptable) {
+                                               if (!g_io_wait_interruptable(&gvnc->wait,
+                                                                            gvnc->channel, G_IO_IN))
+@@ -386,7 +394,7 @@
+                               case EINTR:
+                                       continue;
+                               default:
+-                                      GVNC_DEBUG("Closing the connection: gvnc_read() - ret=-1\n");
++                                      GVNC_DEBUG("Closing the connection: gvnc_read() - errno=%d\n", errno);
+                                       gvnc->has_error = TRUE;
+                                       return -errno;
+                               }
+@@ -436,12 +444,12 @@
+                                   gvnc->write_offset-offset);
+               if (ret == -1) {
+                       switch (errno) {
+-                      case EAGAIN:
++                      case EWOULDBLOCK:
+                               g_io_wait(gvnc->channel, G_IO_OUT);
+                       case EINTR:
+                               continue;
+                       default:
+-                              GVNC_DEBUG("Closing the connection: gvnc_flush\n");
++                              GVNC_DEBUG("Closing the connection: gvnc_flush %d\n", errno);
+                               gvnc->has_error = TRUE;
+                               return;
+                       }
+@@ -1341,12 +1349,12 @@
+ static int gvnc_read_zrle_rl(struct gvnc *gvnc)
+ {
+       int rl = 1;
+-      uint8_t byte;
++      uint8_t b;
+       do {
+-              byte = gvnc_read_u8(gvnc);
+-              rl += byte;
+-      } while (!gvnc_has_error(gvnc) && byte == 255);
++              b = gvnc_read_u8(gvnc);
++              rl += b;
++      } while (!gvnc_has_error(gvnc) && b == 255);
+       return rl;
+ }
+@@ -2802,12 +2810,12 @@
+       if (gvnc_has_error(gvnc))
+               return FALSE;
+-      if (!gvnc->fmt.true_color_flag && gvnc->ops.get_preferred_pixel_format)
++      if (!gvnc->fmt.true_color_flag && gvnc->ops.get_preferred_pixel_format) {
+               if (gvnc->ops.get_preferred_pixel_format(gvnc->ops_data, &gvnc->fmt))
+                       gvnc_set_pixel_format(gvnc, &gvnc->fmt);
+               else
+                       goto fail;
+-
++      }
+       memset(&gvnc->strm, 0, sizeof(gvnc->strm));
+       /* FIXME what level? */
+       for (i = 0; i < 5; i++)
+@@ -2822,15 +2830,16 @@
+       return !gvnc_has_error(gvnc);
+ }
+-gboolean gvnc_open_fd(struct gvnc *gvnc, int fd)
++static gboolean gvnc_set_nonblock(int fd)
+ {
+-      int flags;
+-      if (gvnc_is_open(gvnc)) {
+-              GVNC_DEBUG ("Error: already connected?\n");
++#ifdef __MINGW32__
++      unsigned long flags = 1;
++      if (ioctlsocket(fd, FIONBIO, &flags) < 0) {
++              GVNC_DEBUG ("Failed to set nonblocking flag\n");
+               return FALSE;
+       }
+-
+-      GVNC_DEBUG("Connecting to FD %d\n", fd);
++#else
++      int flags;
+       if ((flags = fcntl(fd, F_GETFL)) < 0) {
+               GVNC_DEBUG ("Failed to fcntl()\n");
+               return FALSE;
+@@ -2840,6 +2849,21 @@
+               GVNC_DEBUG ("Failed to fcntl()\n");
+               return FALSE;
+       }
++#endif
++      return TRUE;
++}
++
++gboolean gvnc_open_fd(struct gvnc *gvnc, int fd)
++{
++      if (gvnc_is_open(gvnc)) {
++              GVNC_DEBUG ("Error: already connected?\n");
++              return FALSE;
++      }
++
++      GVNC_DEBUG("Connecting to FD %d\n", fd);
++
++      if (!gvnc_set_nonblock(fd))
++              return FALSE;
+       if (!(gvnc->channel = g_io_channel_unix_new(fd))) {
+               GVNC_DEBUG ("Failed to g_io_channel_unix_new()\n");
+@@ -2873,7 +2897,7 @@
+         runp = ai;
+         while (runp != NULL) {
+-                int flags, fd;
++                int fd;
+                 GIOChannel *chan;
+               if ((fd = socket(runp->ai_family, runp->ai_socktype,
+@@ -2883,17 +2907,8 @@
+               }
+                 GVNC_DEBUG("Trying socket %d\n", fd);
+-                if ((flags = fcntl(fd, F_GETFL)) < 0) {
+-                        close(fd);
+-                        GVNC_DEBUG ("Failed to fcntl()\n");
+-                        break;
+-                }
+-                flags |= O_NONBLOCK;
+-                if (fcntl(fd, F_SETFL, flags) < 0) {
+-                        close(fd);
+-                        GVNC_DEBUG ("Failed to fcntl()\n");
+-                        break;
+-                }
++              if (!gvnc_set_nonblock(fd))
++                      break;
+                 if (!(chan = g_io_channel_unix_new(fd))) {
+                         close(fd);
+@@ -2904,14 +2919,15 @@
+         reconnect:
+                 /* FIXME: Better handle EINPROGRESS/EISCONN return values,
+                    as explained in connect(2) man page */
+-                if ( (connect(fd, runp->ai_addr, runp->ai_addrlen) == 0) || errno == EISCONN) {
++                if ((connect(fd, runp->ai_addr, runp->ai_addrlen) == 0) ||
++                  errno == EISCONN) {
+                         gvnc->channel = chan;
+                         gvnc->fd = fd;
+                         freeaddrinfo(ai);
+                         return !gvnc_has_error(gvnc);
+                 }
+-
+-                if (errno == EINPROGRESS) {
++                if (errno == EINPROGRESS ||
++                    errno == EWOULDBLOCK) {
+                         g_io_wait(chan, G_IO_OUT|G_IO_ERR|G_IO_HUP);
+                         goto reconnect;
+                 } else if (errno != ECONNREFUSED &&
+diff -urN gtk-vnc-0.3.7.abs/src/Makefile.am gtk-vnc-0.3.7.dan3/src/Makefile.am
+--- gtk-vnc-0.3.7.abs/src/Makefile.am  2008-09-05 13:32:15.000000000 +0100
++++ gtk-vnc-0.3.7.dan3/src/Makefile.am 2008-10-09 15:23:00.000000000 +0100
+@@ -4,13 +4,15 @@
+ lib_LTLIBRARIES = libgtk-vnc-1.0.la
+ libgtk_vnc_1_0_la_LIBADD = @GTK_LIBS@ @GTKGLEXT_LIBS@ @GNUTLS_LIBS@ \
+-                         @GTHREAD_LIBS@
++                         @GTHREAD_LIBS@ \
++                           ../gnulib/lib/libgnu.la
+ libgtk_vnc_1_0_la_CFLAGS = @GTK_CFLAGS@ @GTKGLEXT_CFLAGS@ @GNUTLS_CFLAGS@ \
+                          @GTHREAD_CFLAGS@ @WARNING_CFLAGS@ \
+                          -DSYSCONFDIR=\""$(sysconfdir)"\" \
+-                           -DG_LOG_DOMAIN=\"gtk-vnc\"
++                           -DG_LOG_DOMAIN=\"gtk-vnc\" \
++                           -I$(top_srcdir)gnulib/lib -I../gnulib/lib
+ libgtk_vnc_1_0_la_LDFLAGS = -Wl, @LD_VERSION_SCRIPT_SUPPORT@ \
+-                            -version-info 0:1:0
++                            -version-info 0:1:0 -no-undefined
+ gtk_vnc_includedir = $(includedir)/gtk-vnc-1.0/
+ gtk_vnc_include_HEADERS = vncdisplay.h
+diff -urN gtk-vnc-0.3.7.abs/src/vncdisplay.c gtk-vnc-0.3.7.dan3/src/vncdisplay.c
+--- gtk-vnc-0.3.7.abs/src/vncdisplay.c 2008-10-09 15:21:21.000000000 +0100
++++ gtk-vnc-0.3.7.dan3/src/vncdisplay.c        2008-10-09 15:23:00.000000000 +0100
+@@ -8,6 +8,8 @@
+  *  GTK VNC Widget
+  */
++#include <config.h>
++
+ #include "vncdisplay.h"
+ #include "coroutine.h"
+ #include "gvnc.h"
+@@ -24,7 +26,9 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
++#ifdef HAVE_PWD_H
+ #include <pwd.h>
++#endif
+ #if WITH_GTKGLEXT
+ #include <gtk/gtkgl.h>
+@@ -2191,33 +2195,44 @@
+ static int vnc_display_set_x509_credential(VncDisplay *obj, const char *name)
+ {
+-      char sysdir[PATH_MAX], userdir[PATH_MAX];
+-      struct passwd *pw;
+       char file[PATH_MAX];
++      char sysdir[PATH_MAX];
++#ifndef __MINGW32__
++      char userdir[PATH_MAX];
++      struct passwd *pw;
+       char *dirs[] = { sysdir, userdir };
++#else
++      char *dirs[] = { sysdir };
++#endif
+       strncpy(sysdir, SYSCONFDIR "/pki", PATH_MAX-1);
+       sysdir[PATH_MAX-1] = '\0';
++#ifndef __MINGW32__
+       if (!(pw = getpwuid(getuid())))
+               return TRUE;
+       snprintf(userdir, PATH_MAX-1, "%s/.pki", pw->pw_dir);
+       userdir[PATH_MAX-1] = '\0';
++#endif
+-      if (vnc_display_best_path(file, PATH_MAX, "CA", "cacert.pem", dirs, 2) < 0)
++      if (vnc_display_best_path(file, PATH_MAX, "CA", "cacert.pem",
++                                dirs, sizeof(dirs)/sizeof(dirs[0])) < 0)
+               return TRUE;
+       gvnc_set_credential_x509_cacert(obj->priv->gvnc, file);
+       /* Don't mind failures of CRL */
+-      if (vnc_display_best_path(file, PATH_MAX, "CA", "cacrl.pem", dirs, 2) == 0)
++      if (vnc_display_best_path(file, PATH_MAX, "CA", "cacrl.pem",
++                                dirs, sizeof(dirs)/sizeof(dirs[0])) == 0)
+               gvnc_set_credential_x509_cacert(obj->priv->gvnc, file);
+       /* Set client key & cert if we have them. Server will reject auth
+        * if it decides it requires them*/
+-      if (vnc_display_best_path(file, PATH_MAX, name, "private/clientkey.pem", dirs, 2) == 0)
++      if (vnc_display_best_path(file, PATH_MAX, name, "private/clientkey.pem",
++                                dirs, sizeof(dirs)/sizeof(dirs[0])) == 0)
+               gvnc_set_credential_x509_key(obj->priv->gvnc, file);
+-      if (vnc_display_best_path(file, PATH_MAX, name, "clientcert.pem", dirs, 2) == 0)
++      if (vnc_display_best_path(file, PATH_MAX, name, "clientcert.pem",
++                                dirs, sizeof(dirs)/sizeof(dirs[0])) == 0)
+               gvnc_set_credential_x509_cert(obj->priv->gvnc, file);
+       return FALSE;
+diff -urN gtk-vnc-0.3.7.abs/vc-list-files gtk-vnc-0.3.7.dan3/vc-list-files
+--- gtk-vnc-0.3.7.abs/vc-list-files    1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.dan3/vc-list-files   2008-10-09 15:23:00.000000000 +0100
+@@ -0,0 +1,107 @@
++#!/bin/sh
++# List version-controlled file names.
++
++# Print a version string.
++scriptversion=2008-07-11.19
++
++# Copyright (C) 2006-2008 Free Software Foundation, Inc.
++
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++
++
++# List the specified version-controlled files.
++# With no argument, list them all.  With a single DIRECTORY argument,
++# list the version-controlled files in that directory.
++
++# If there's an argument, it must be a single, "."-relative directory name.
++# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
++
++postprocess=
++case $1 in
++  --help) cat <<EOF
++Usage: $0 [-C SRCDIR] [DIR]
++
++Output a list of version-controlled files in DIR (default .), relative to
++SRCDIR (default .).  SRCDIR must be the top directory of a checkout.
++
++Options:
++  --help     print this help, then exit
++  --version  print version number, then exit
++  -C SRCDIR  change directory to SRCDIR before generating list
++
++Report bugs and patches to <bug-gnulib@gnu.org>.
++EOF
++    exit ;;
++
++  --version)
++    year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
++    cat <<EOF
++vc-list-files $scriptversion
++Copyright (C) $year Free Software Foundation, Inc,
++License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
++This is free software: you are free to change and redistribute it.
++There is NO WARRANTY, to the extent permitted by law.
++EOF
++    exit ;;
++
++  -C)
++    test "$2" = . || postprocess="| sed 's|^|$2/|'"
++    cd "$2" || exit 1
++    shift; shift ;;
++esac
++
++dir=
++case $# in
++  0) ;;
++  1) dir=$1 ;;
++  *) echo "$0: too many arguments" 1>&2
++     echo "Usage: $0 [-C srcdir] [DIR]" 1>&2; exit 1;;
++esac
++
++test "x$dir" = x && dir=.
++
++if test -d .git; then
++  eval exec git ls-files '"$dir"' $postprocess
++elif test -d .hg; then
++  eval exec hg locate '"$dir/*"' $postprocess
++elif test -d .bzr; then
++  test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
++  eval exec bzr ls --versioned '"$dir"' $postprocess
++elif test -d CVS; then
++  test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
++  if test -x build-aux/cvsu; then
++    eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
++  elif (cvsu --help) >/dev/null 2>&1; then
++    eval cvsu --find --types=AFGM '"$dir"' $postprocess
++  else
++    eval awk -F/ \''{                 \
++      if (!$1 && $3 !~ /^-/) {        \
++        f=FILENAME;                   \
++        if (f ~ /CVS\/Entries$/)      \
++          f = substr(f, 0, length(f)-11); \
++        print f $2;                   \
++      }}'\''                          \
++      `find "$dir" -name Entries -print` /dev/null' $postprocess
++  fi
++else
++  echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
++  exit 1
++fi
++
++# Local variables:
++# eval: (add-hook 'write-file-hooks 'time-stamp)
++# time-stamp-start: "scriptversion="
++# time-stamp-format: "%:y-%02m-%02d.%02H"
++# time-stamp-end: "$"
++# End:
index ed2d9d6..1dc1b1f 100644 (file)
@@ -1,20 +1,6 @@
-diff -urN gtk-vnc-0.3.7.mingw/bootstrap gtk-vnc-0.3.7.gnulib/bootstrap
---- gtk-vnc-0.3.7.mingw/bootstrap      2008-10-09 12:19:03.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/bootstrap     2008-10-09 12:33:37.000000000 +0100
-@@ -65,6 +65,10 @@
- <$gnulib_tool || exit
- modules='
-+recv
-+send
-+socket
-+connect
- getaddrinfo
- vc-list-files
- '
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/alloca.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/alloca.in.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/alloca.in.h 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/alloca.in.h        2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/alloca.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/alloca.in.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/alloca.in.h  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/alloca.in.h        2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,56 @@
 +/* Memory allocation on the stack.
 +
@@ -72,9 +58,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/alloca.in.h gtk-vnc-0.3.7.gnulib/gnulib
 +#endif
 +
 +#endif /* _GL_ALLOCA_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/arpa_inet.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/arpa_inet.in.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/arpa_inet.in.h      1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/arpa_inet.in.h     2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/arpa_inet.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/arpa_inet.in.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/arpa_inet.in.h       1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/arpa_inet.in.h     2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,80 @@
 +/* A GNU-like <arpa/inet.h>.
 +
@@ -156,9 +142,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/arpa_inet.in.h gtk-vnc-0.3.7.gnulib/gnu
 +
 +#endif /* _GL_ARPA_INET_H */
 +#endif /* _GL_ARPA_INET_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/asnprintf.c gtk-vnc-0.3.7.gnulib/gnulib/lib/asnprintf.c
---- gtk-vnc-0.3.7.mingw/gnulib/lib/asnprintf.c 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/asnprintf.c        2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/asnprintf.c gtk-vnc-0.3.7.gnulib/gnulib/lib/asnprintf.c
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/asnprintf.c  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/asnprintf.c        2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,35 @@
 +/* Formatted output to strings.
 +   Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
@@ -195,9 +181,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/asnprintf.c gtk-vnc-0.3.7.gnulib/gnulib
 +  va_end (args);
 +  return result;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/dummy.c gtk-vnc-0.3.7.gnulib/gnulib/lib/dummy.c
---- gtk-vnc-0.3.7.mingw/gnulib/lib/dummy.c     1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/dummy.c    2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/dummy.c gtk-vnc-0.3.7.gnulib/gnulib/lib/dummy.c
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/dummy.c      1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/dummy.c    2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,42 @@
 +/* A dummy file, to prevent empty libraries from breaking builds.
 +   Copyright (C) 2004, 2007 Free Software Foundation, Inc.
@@ -241,9 +227,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/dummy.c gtk-vnc-0.3.7.gnulib/gnulib/lib
 +   this file is never empty.  */
 +typedef int dummy;
 +#endif
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/errno.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/errno.in.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/errno.in.h  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/errno.in.h 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/errno.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/errno.in.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/errno.in.h   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/errno.in.h 2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,153 @@
 +/* A POSIX-like <errno.h>.
 +
@@ -398,9 +384,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/errno.in.h gtk-vnc-0.3.7.gnulib/gnulib/
 +
 +#endif /* _GL_ERRNO_H */
 +#endif /* _GL_ERRNO_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/float+.h gtk-vnc-0.3.7.gnulib/gnulib/lib/float+.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/float+.h    1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/float+.h   2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/float+.h gtk-vnc-0.3.7.gnulib/gnulib/lib/float+.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/float+.h     1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/float+.h   2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,148 @@
 +/* Supplemental information about the floating-point formats.
 +   Copyright (C) 2007 Free Software Foundation, Inc.
@@ -550,9 +536,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/float+.h gtk-vnc-0.3.7.gnulib/gnulib/li
 +typedef int verify_sizeof_ldbl[2 * (SIZEOF_LDBL <= sizeof (long double)) - 1];
 +
 +#endif /* _FLOATPLUS_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/float.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/float.in.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/float.in.h  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/float.in.h 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/float.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/float.in.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/float.in.h   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/float.in.h 2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,60 @@
 +/* A correct <float.h>.
 +
@@ -614,9 +600,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/float.in.h gtk-vnc-0.3.7.gnulib/gnulib/
 +
 +#endif /* _GL_FLOAT_H */
 +#endif /* _GL_FLOAT_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/gai_strerror.c gtk-vnc-0.3.7.gnulib/gnulib/lib/gai_strerror.c
---- gtk-vnc-0.3.7.mingw/gnulib/lib/gai_strerror.c      1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/gai_strerror.c     2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/gai_strerror.c gtk-vnc-0.3.7.gnulib/gnulib/lib/gai_strerror.c
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/gai_strerror.c       1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/gai_strerror.c     2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,78 @@
 +/* Copyright (C) 1997, 2001, 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -696,9 +682,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/gai_strerror.c gtk-vnc-0.3.7.gnulib/gnu
 +#ifdef _LIBC
 +libc_hidden_def (gai_strerror)
 +#endif
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/getaddrinfo.c gtk-vnc-0.3.7.gnulib/gnulib/lib/getaddrinfo.c
---- gtk-vnc-0.3.7.mingw/gnulib/lib/getaddrinfo.c       1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/getaddrinfo.c      2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/getaddrinfo.c gtk-vnc-0.3.7.gnulib/gnulib/lib/getaddrinfo.c
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/getaddrinfo.c        1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/getaddrinfo.c      2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,419 @@
 +/* Get address information (partial implementation).
 +   Copyright (C) 1997, 2001, 2002, 2004, 2005, 2006, 2007, 2008 Free Software
@@ -1119,9 +1105,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/getaddrinfo.c gtk-vnc-0.3.7.gnulib/gnul
 +
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/getaddrinfo.h gtk-vnc-0.3.7.gnulib/gnulib/lib/getaddrinfo.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/getaddrinfo.h       1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/getaddrinfo.h      2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/getaddrinfo.h gtk-vnc-0.3.7.gnulib/gnulib/lib/getaddrinfo.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/getaddrinfo.h        1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/getaddrinfo.h      2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,163 @@
 +/* Get address information.
 +   Copyright (C) 1996-2002, 2003, 2004, 2005, 2006, 2008
@@ -1286,9 +1272,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/getaddrinfo.h gtk-vnc-0.3.7.gnulib/gnul
 +#endif
 +
 +#endif /* GETADDRINFO_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/gettext.h gtk-vnc-0.3.7.gnulib/gnulib/lib/gettext.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/gettext.h   1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/gettext.h  2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/gettext.h gtk-vnc-0.3.7.gnulib/gnulib/lib/gettext.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/gettext.h    1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/gettext.h  2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,270 @@
 +/* Convenience header for conditional use of GNU <libintl.h>.
 +   Copyright (C) 1995-1998, 2000-2002, 2004-2006 Free Software Foundation, Inc.
@@ -1560,9 +1546,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/gettext.h gtk-vnc-0.3.7.gnulib/gnulib/l
 +}
 +
 +#endif /* _LIBGETTEXT_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/inet_ntop.c gtk-vnc-0.3.7.gnulib/gnulib/lib/inet_ntop.c
---- gtk-vnc-0.3.7.mingw/gnulib/lib/inet_ntop.c 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/inet_ntop.c        2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/inet_ntop.c gtk-vnc-0.3.7.gnulib/gnulib/lib/inet_ntop.c
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/inet_ntop.c  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/inet_ntop.c        2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,238 @@
 +/* inet_ntop.c -- convert IPv4 and IPv6 addresses from binary to text form
 +
@@ -1802,10 +1788,10 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/inet_ntop.c gtk-vnc-0.3.7.gnulib/gnulib
 +}
 +
 +#endif
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/Makefile.am gtk-vnc-0.3.7.gnulib/gnulib/lib/Makefile.am
---- gtk-vnc-0.3.7.mingw/gnulib/lib/Makefile.am 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/Makefile.am        2008-10-09 12:33:42.000000000 +0100
-@@ -0,0 +1,484 @@
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/Makefile.am gtk-vnc-0.3.7.gnulib/gnulib/lib/Makefile.am
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/Makefile.am  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/Makefile.am        2008-10-09 15:24:53.000000000 +0100
+@@ -0,0 +1,605 @@
 +## DO NOT EDIT! GENERATED AUTOMATICALLY!
 +## Process this file with automake to produce Makefile.in.
 +# Copyright (C) 2002-2008 Free Software Foundation, Inc.
@@ -1817,7 +1803,7 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/Makefile.am gtk-vnc-0.3.7.gnulib/gnulib
 +# the same distribution terms as the rest of that program.
 +#
 +# Generated by gnulib-tool.
-+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --tests-base=gnulib/tests --aux-dir=. --with-tests --lgpl=2 --libtool --macro-prefix=gl connect getaddrinfo recv send socket vc-list-files
++# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --tests-base=gnulib/tests --aux-dir=. --with-tests --lgpl=2 --libtool --macro-prefix=gl connect getaddrinfo malloc recv send socket vc-list-files
 +
 +AUTOMAKE_OPTIONS = 1.5 gnits
 +
@@ -1979,6 +1965,24 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/Makefile.am gtk-vnc-0.3.7.gnulib/gnulib
 +
 +## end   gnulib module link-warning
 +
++## begin gnulib module malloc
++
++
++EXTRA_DIST += malloc.c
++
++EXTRA_libgnu_la_SOURCES += malloc.c
++
++## end   gnulib module malloc
++
++## begin gnulib module malloc-posix
++
++
++EXTRA_DIST += malloc.c
++
++EXTRA_libgnu_la_SOURCES += malloc.c
++
++## end   gnulib module malloc-posix
++
 +## begin gnulib module netinet_in
 +
 +BUILT_SOURCES += $(NETINET_IN_H)
@@ -2186,6 +2190,52 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/Makefile.am gtk-vnc-0.3.7.gnulib/gnulib
 +
 +## end   gnulib module stdio
 +
++## begin gnulib module stdlib
++
++BUILT_SOURCES += stdlib.h
++
++# We need the following in order to create <stdlib.h> when the system
++# doesn't have one that works with the given compiler.
++stdlib.h: stdlib.in.h
++      rm -f $@-t $@
++      { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
++        sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
++            -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
++            -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
++            -e 's|@''GNULIB_MALLOC_POSIX''@|$(GNULIB_MALLOC_POSIX)|g' \
++            -e 's|@''GNULIB_REALLOC_POSIX''@|$(GNULIB_REALLOC_POSIX)|g' \
++            -e 's|@''GNULIB_CALLOC_POSIX''@|$(GNULIB_CALLOC_POSIX)|g' \
++            -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
++            -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
++            -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
++            -e 's|@''GNULIB_PUTENV''@|$(GNULIB_PUTENV)|g' \
++            -e 's|@''GNULIB_RPMATCH''@|$(GNULIB_RPMATCH)|g' \
++            -e 's|@''GNULIB_SETENV''@|$(GNULIB_SETENV)|g' \
++            -e 's|@''GNULIB_STRTOD''@|$(GNULIB_STRTOD)|g' \
++            -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
++            -e 's|@''HAVE_CALLOC_POSIX''@|$(HAVE_CALLOC_POSIX)|g' \
++            -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
++            -e 's|@''HAVE_MALLOC_POSIX''@|$(HAVE_MALLOC_POSIX)|g' \
++            -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
++            -e 's|@''HAVE_REALLOC_POSIX''@|$(HAVE_REALLOC_POSIX)|g' \
++            -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
++            -e 's|@''HAVE_SETENV''@|$(HAVE_SETENV)|g' \
++            -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
++            -e 's|@''HAVE_UNSETENV''@|$(HAVE_UNSETENV)|g' \
++            -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
++            -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
++            -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
++            -e 's|@''VOID_UNSETENV''@|$(VOID_UNSETENV)|g' \
++            -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
++            < $(srcdir)/stdlib.in.h; \
++      } > $@-t
++      mv $@-t $@
++MOSTLYCLEANFILES += stdlib.h stdlib.h-t
++
++EXTRA_DIST += stdlib.in.h
++
++## end   gnulib module stdlib
++
 +## begin gnulib module sys_socket
 +
 +BUILT_SOURCES += $(SYS_SOCKET_H)
@@ -2227,6 +2277,63 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/Makefile.am gtk-vnc-0.3.7.gnulib/gnulib
 +
 +## end   gnulib module sys_socket
 +
++## begin gnulib module unistd
++
++BUILT_SOURCES += unistd.h
++
++# We need the following in order to create an empty placeholder for
++# <unistd.h> when the system doesn't have one.
++unistd.h: unistd.in.h
++      rm -f $@-t $@
++      { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
++        sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
++            -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
++            -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
++            -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
++            -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
++            -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
++            -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
++            -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
++            -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
++            -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
++            -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
++            -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
++            -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
++            -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
++            -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
++            -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
++            -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
++            -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
++            -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
++            -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
++            -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
++            -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
++            -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
++            -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
++            -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
++            -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
++            -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
++            -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
++            -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
++            -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
++            -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
++            -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
++            -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
++            -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
++            -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
++            -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
++            -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
++            -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
++            -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
++            < $(srcdir)/unistd.in.h; \
++      } > $@-t
++      mv $@-t $@
++MOSTLYCLEANFILES += unistd.h unistd.h-t
++
++EXTRA_DIST += unistd.in.h
++
++## end   gnulib module unistd
++
 +## begin gnulib module vasnprintf
 +
 +
@@ -2290,550 +2397,159 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/Makefile.am gtk-vnc-0.3.7.gnulib/gnulib
 +        fi; \
 +      done; \
 +      :
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/Makefile.am~ gtk-vnc-0.3.7.gnulib/gnulib/lib/Makefile.am~
---- gtk-vnc-0.3.7.mingw/gnulib/lib/Makefile.am~        1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/Makefile.am~       2008-10-09 12:24:40.000000000 +0100
-@@ -0,0 +1,448 @@
-+## DO NOT EDIT! GENERATED AUTOMATICALLY!
-+## Process this file with automake to produce Makefile.in.
-+# Copyright (C) 2002-2008 Free Software Foundation, Inc.
-+#
-+# This file is free software, distributed under the terms of the GNU
-+# General Public License.  As a special exception to the GNU General
-+# Public License, this file may be distributed as part of a program
-+# that contains a configuration script generated by Autoconf, under
-+# the same distribution terms as the rest of that program.
-+#
-+# Generated by gnulib-tool.
-+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --tests-base=gnulib/tests --aux-dir=. --with-tests --lgpl=2 --libtool --macro-prefix=gl getaddrinfo vc-list-files
-+
-+AUTOMAKE_OPTIONS = 1.5 gnits
-+
-+SUBDIRS =
-+noinst_HEADERS =
-+noinst_LIBRARIES =
-+noinst_LTLIBRARIES =
-+EXTRA_DIST =
-+BUILT_SOURCES =
-+SUFFIXES =
-+MOSTLYCLEANFILES = core *.stackdump
-+MOSTLYCLEANDIRS =
-+CLEANFILES =
-+DISTCLEANFILES =
-+MAINTAINERCLEANFILES =
-+
-+AM_CPPFLAGS =
-+
-+noinst_LTLIBRARIES += libgnu.la
-+
-+libgnu_la_SOURCES =
-+libgnu_la_LIBADD = $(gl_LTLIBOBJS)
-+libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS)
-+EXTRA_libgnu_la_SOURCES =
-+libgnu_la_LDFLAGS = $(AM_LDFLAGS)
-+
-+## begin gnulib module alloca-opt
-+
-+BUILT_SOURCES += $(ALLOCA_H)
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/malloc.c gtk-vnc-0.3.7.gnulib/gnulib/lib/malloc.c
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/malloc.c     1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/malloc.c   2008-10-09 15:24:52.000000000 +0100
+@@ -0,0 +1,57 @@
++/* malloc() function that is glibc compatible.
 +
-+# We need the following in order to create <alloca.h> when the system
-+# doesn't have one that works with the given compiler.
-+alloca.h: alloca.in.h
-+      { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-+        cat $(srcdir)/alloca.in.h; \
-+      } > $@-t
-+      mv -f $@-t $@
-+MOSTLYCLEANFILES += alloca.h alloca.h-t
++   Copyright (C) 1997, 1998, 2006, 2007 Free Software Foundation, Inc.
 +
-+EXTRA_DIST += alloca.in.h
++   This program is free software; you can redistribute it and/or modify
++   it under the terms of the GNU Lesser General Public License as published by
++   the Free Software Foundation; either version 2.1, or (at your option)
++   any later version.
 +
-+## end   gnulib module alloca-opt
++   This program is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU Lesser General Public License for more details.
 +
-+## begin gnulib module arpa_inet
++   You should have received a copy of the GNU Lesser General Public License
++   along with this program; if not, write to the Free Software Foundation,
++   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 +
-+BUILT_SOURCES += $(ARPA_INET_H)
++/* written by Jim Meyering and Bruno Haible */
 +
-+# We need the following in order to create <arpa/inet.h> when the system
-+# doesn't have one.
-+arpa/inet.h:
-+      @MKDIR_P@ arpa
-+      rm -f $@-t $@
-+      { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-+        sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-+            -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-+            -e 's|@''NEXT_ARPA_INET_H''@|$(NEXT_ARPA_INET_H)|g' \
-+            -e 's|@''HAVE_ARPA_INET_H''@|$(HAVE_ARPA_INET_H)|g' \
-+            -e 's|@''GNULIB_INET_NTOP''@|$(GNULIB_INET_NTOP)|g' \
-+            -e 's|@''GNULIB_INET_PTON''@|$(GNULIB_INET_PTON)|g' \
-+            -e 's|@''HAVE_DECL_INET_NTOP''@|$(HAVE_DECL_INET_NTOP)|g' \
-+            -e 's|@''HAVE_DECL_INET_PTON''@|$(HAVE_DECL_INET_PTON)|g' \
-+            -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
-+            < $(srcdir)/arpa_inet.in.h; \
-+      } > $@-t
-+      mv $@-t $@
-+MOSTLYCLEANFILES += arpa/inet.h arpa/inet.h-t
-+MOSTLYCLEANDIRS += arpa
++#include <config.h>
++/* Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h.  */
++#ifdef malloc
++# define NEED_MALLOC_GNU
++# undef malloc
++#endif
 +
-+EXTRA_DIST += arpa_inet.in.h
++/* Specification.  */
++#include <stdlib.h>
 +
-+## end   gnulib module arpa_inet
++#include <errno.h>
 +
-+## begin gnulib module errno
++/* Call the system's malloc below.  */
++#undef malloc
 +
-+BUILT_SOURCES += $(ERRNO_H)
++/* Allocate an N-byte block of memory from the heap.
++   If N is zero, allocate a 1-byte block.  */
 +
-+# We need the following in order to create <errno.h> when the system
-+# doesn't have one that is POSIX compliant.
-+errno.h: errno.in.h
-+      rm -f $@-t $@
-+      { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
-+        sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-+            -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-+            -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
-+            -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
-+            -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
-+            -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
-+            -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
-+            -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
-+            -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
-+            < $(srcdir)/errno.in.h; \
-+      } > $@-t
-+      mv $@-t $@
-+MOSTLYCLEANFILES += errno.h errno.h-t
++void *
++rpl_malloc (size_t n)
++{
++  void *result;
 +
-+EXTRA_DIST += errno.in.h
++#ifdef NEED_MALLOC_GNU
++  if (n == 0)
++    n = 1;
++#endif
 +
-+## end   gnulib module errno
++  result = malloc (n);
 +
-+## begin gnulib module float
++#if !HAVE_MALLOC_POSIX
++  if (result == NULL)
++    errno = ENOMEM;
++#endif
 +
-+BUILT_SOURCES += $(FLOAT_H)
++  return result;
++}
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/netinet_in.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/netinet_in.in.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/netinet_in.in.h      1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/netinet_in.in.h    2008-10-09 15:24:52.000000000 +0100
+@@ -0,0 +1,45 @@
++/* Substitute for <netinet/in.h>.
++   Copyright (C) 2007-2008 Free Software Foundation, Inc.
 +
-+# We need the following in order to create <float.h> when the system
-+# doesn't have one that works with the given compiler.
-+float.h: float.in.h
-+      rm -f $@-t $@
-+      { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
-+        sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-+            -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-+            -e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \
-+            < $(srcdir)/float.in.h; \
-+      } > $@-t
-+      mv $@-t $@
-+MOSTLYCLEANFILES += float.h float.h-t
++   This program is free software; you can redistribute it and/or modify
++   it under the terms of the GNU Lesser General Public License as published by
++   the Free Software Foundation; either version 2.1, or (at your option)
++   any later version.
 +
-+EXTRA_DIST += float.in.h
++   This program is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU Lesser General Public License for more details.
 +
-+## end   gnulib module float
++   You should have received a copy of the GNU Lesser General Public License
++   along with this program; if not, write to the Free Software Foundation,
++   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 +
-+## begin gnulib module getaddrinfo
++#ifndef _GL_NETINET_IN_H
 +
++#if @HAVE_NETINET_IN_H@
 +
-+EXTRA_DIST += gai_strerror.c getaddrinfo.c getaddrinfo.h
++@PRAGMA_SYSTEM_HEADER@
 +
-+EXTRA_libgnu_la_SOURCES += gai_strerror.c getaddrinfo.c
++/* On many platforms, <netinet/in.h> assumes prior inclusion of
++   <sys/types.h>.  */
++# include <sys/types.h>
 +
-+## end   gnulib module getaddrinfo
++/* The include_next requires a split double-inclusion guard.  */
++# @INCLUDE_NEXT@ @NEXT_NETINET_IN_H@
 +
-+## begin gnulib module gettext-h
++#endif
 +
-+libgnu_la_SOURCES += gettext.h
++#ifndef _GL_NETINET_IN_H
++#define _GL_NETINET_IN_H
 +
-+## end   gnulib module gettext-h
++#if !@HAVE_NETINET_IN_H@
 +
-+## begin gnulib module inet_ntop
++/* A platform that lacks <netinet/in.h>.  */
 +
++# include <sys/socket.h>
 +
-+EXTRA_DIST += inet_ntop.c
++#endif
 +
-+EXTRA_libgnu_la_SOURCES += inet_ntop.c
++#endif /* _GL_NETINET_IN_H */
++#endif /* _GL_NETINET_IN_H */
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/printf-args.c gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-args.c
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/printf-args.c        1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-args.c      2008-10-09 15:24:52.000000000 +0100
+@@ -0,0 +1,187 @@
++/* Decomposed printf argument list.
++   Copyright (C) 1999, 2002-2003, 2005-2007 Free Software Foundation, Inc.
 +
-+## end   gnulib module inet_ntop
++   This program is free software; you can redistribute it and/or modify
++   it under the terms of the GNU Lesser General Public License as published by
++   the Free Software Foundation; either version 2.1, or (at your option)
++   any later version.
 +
-+## begin gnulib module link-warning
++   This program is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU Lesser General Public License for more details.
 +
-+LINK_WARNING_H=$(top_srcdir)/./link-warning.h
++   You should have received a copy of the GNU Lesser General Public License along
++   with this program; if not, write to the Free Software Foundation,
++   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 +
-+EXTRA_DIST += $(top_srcdir)/./link-warning.h
++/* This file can be parametrized with the following macros:
++     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
++     PRINTF_FETCHARGS   Name of the function to be defined.
++     STATIC             Set to 'static' to declare the function static.  */
 +
-+## end   gnulib module link-warning
++#ifndef PRINTF_FETCHARGS
++# include <config.h>
++#endif
 +
-+## begin gnulib module netinet_in
++/* Specification.  */
++#ifndef PRINTF_FETCHARGS
++# include "printf-args.h"
++#endif
 +
-+BUILT_SOURCES += $(NETINET_IN_H)
-+
-+# We need the following in order to create <netinet/in.h> when the system
-+# doesn't have one.
-+netinet/in.h: netinet_in.in.h
-+      @MKDIR_P@ netinet
-+      rm -f $@-t $@
-+      { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-+        sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-+            -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-+            -e 's|@''NEXT_NETINET_IN_H''@|$(NEXT_NETINET_IN_H)|g' \
-+            -e 's|@''HAVE_NETINET_IN_H''@|$(HAVE_NETINET_IN_H)|g' \
-+            < $(srcdir)/netinet_in.in.h; \
-+      } > $@-t
-+      mv $@-t $@
-+MOSTLYCLEANFILES += netinet/in.h netinet/in.h-t
-+MOSTLYCLEANDIRS += netinet
-+
-+EXTRA_DIST += netinet_in.in.h
-+
-+## end   gnulib module netinet_in
-+
-+## begin gnulib module size_max
-+
-+libgnu_la_SOURCES += size_max.h
-+
-+## end   gnulib module size_max
-+
-+## begin gnulib module snprintf
-+
-+
-+EXTRA_DIST += snprintf.c
-+
-+EXTRA_libgnu_la_SOURCES += snprintf.c
-+
-+## end   gnulib module snprintf
-+
-+## begin gnulib module stdbool
-+
-+BUILT_SOURCES += $(STDBOOL_H)
-+
-+# We need the following in order to create <stdbool.h> when the system
-+# doesn't have one that works.
-+stdbool.h: stdbool.in.h
-+      rm -f $@-t $@
-+      { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-+        sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
-+      } > $@-t
-+      mv $@-t $@
-+MOSTLYCLEANFILES += stdbool.h stdbool.h-t
-+
-+EXTRA_DIST += stdbool.in.h
-+
-+## end   gnulib module stdbool
-+
-+## begin gnulib module stdint
-+
-+BUILT_SOURCES += $(STDINT_H)
-+
-+# We need the following in order to create <stdint.h> when the system
-+# doesn't have one that works with the given compiler.
-+stdint.h: stdint.in.h
-+      rm -f $@-t $@
-+      { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-+        sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
-+            -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-+            -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-+            -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
-+            -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
-+            -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
-+            -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
-+            -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
-+            -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
-+            -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
-+            -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
-+            -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
-+            -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
-+            -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
-+            -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
-+            -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
-+            -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
-+            -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
-+            -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
-+            -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
-+            -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
-+            -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
-+            -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
-+            < $(srcdir)/stdint.in.h; \
-+      } > $@-t
-+      mv $@-t $@
-+MOSTLYCLEANFILES += stdint.h stdint.h-t
-+
-+EXTRA_DIST += stdint.in.h
-+
-+## end   gnulib module stdint
-+
-+## begin gnulib module stdio
-+
-+BUILT_SOURCES += stdio.h
-+
-+# We need the following in order to create <stdio.h> when the system
-+# doesn't have one that works with the given compiler.
-+stdio.h: stdio.in.h
-+      rm -f $@-t $@
-+      { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
-+        sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-+            -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-+            -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
-+            -e 's|@''GNULIB_FPRINTF''@|$(GNULIB_FPRINTF)|g' \
-+            -e 's|@''GNULIB_FPRINTF_POSIX''@|$(GNULIB_FPRINTF_POSIX)|g' \
-+            -e 's|@''GNULIB_PRINTF''@|$(GNULIB_PRINTF)|g' \
-+            -e 's|@''GNULIB_PRINTF_POSIX''@|$(GNULIB_PRINTF_POSIX)|g' \
-+            -e 's|@''GNULIB_SNPRINTF''@|$(GNULIB_SNPRINTF)|g' \
-+            -e 's|@''GNULIB_SPRINTF_POSIX''@|$(GNULIB_SPRINTF_POSIX)|g' \
-+            -e 's|@''GNULIB_VFPRINTF''@|$(GNULIB_VFPRINTF)|g' \
-+            -e 's|@''GNULIB_VFPRINTF_POSIX''@|$(GNULIB_VFPRINTF_POSIX)|g' \
-+            -e 's|@''GNULIB_VPRINTF''@|$(GNULIB_VPRINTF)|g' \
-+            -e 's|@''GNULIB_VPRINTF_POSIX''@|$(GNULIB_VPRINTF_POSIX)|g' \
-+            -e 's|@''GNULIB_VSNPRINTF''@|$(GNULIB_VSNPRINTF)|g' \
-+            -e 's|@''GNULIB_VSPRINTF_POSIX''@|$(GNULIB_VSPRINTF_POSIX)|g' \
-+            -e 's|@''GNULIB_VASPRINTF''@|$(GNULIB_VASPRINTF)|g' \
-+            -e 's|@''GNULIB_OBSTACK_PRINTF''@|$(GNULIB_OBSTACK_PRINTF)|g' \
-+            -e 's|@''GNULIB_OBSTACK_PRINTF_POSIX''@|$(GNULIB_OBSTACK_PRINTF_POSIX)|g' \
-+            -e 's|@''GNULIB_FOPEN''@|$(GNULIB_FOPEN)|g' \
-+            -e 's|@''GNULIB_FREOPEN''@|$(GNULIB_FREOPEN)|g' \
-+            -e 's|@''GNULIB_FSEEK''@|$(GNULIB_FSEEK)|g' \
-+            -e 's|@''GNULIB_FSEEKO''@|$(GNULIB_FSEEKO)|g' \
-+            -e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \
-+            -e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|g' \
-+            -e 's|@''GNULIB_FFLUSH''@|$(GNULIB_FFLUSH)|g' \
-+            -e 's|@''GNULIB_FPUTC''@|$(GNULIB_FPUTC)|g' \
-+            -e 's|@''GNULIB_PUTC''@|$(GNULIB_PUTC)|g' \
-+            -e 's|@''GNULIB_PUTCHAR''@|$(GNULIB_PUTCHAR)|g' \
-+            -e 's|@''GNULIB_FPUTS''@|$(GNULIB_FPUTS)|g' \
-+            -e 's|@''GNULIB_PUTS''@|$(GNULIB_PUTS)|g' \
-+            -e 's|@''GNULIB_FWRITE''@|$(GNULIB_FWRITE)|g' \
-+            -e 's|@''GNULIB_GETDELIM''@|$(GNULIB_GETDELIM)|g' \
-+            -e 's|@''GNULIB_GETLINE''@|$(GNULIB_GETLINE)|g' \
-+            -e 's|@''GNULIB_PERROR''@|$(GNULIB_PERROR)|g' \
-+            -e 's|@''GNULIB_STDIO_H_SIGPIPE''@|$(GNULIB_STDIO_H_SIGPIPE)|g' \
-+            -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
-+            -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
-+            -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
-+            -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \
-+            -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
-+            -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
-+            -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
-+            -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
-+            -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
-+            -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
-+            -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
-+            -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
-+            -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
-+            -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
-+            -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \
-+            -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \
-+            -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \
-+            -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \
-+            -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \
-+            -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \
-+            -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \
-+            -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
-+            -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
-+            -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
-+            -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \
-+            -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \
-+            -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
-+            < $(srcdir)/stdio.in.h; \
-+      } > $@-t
-+      mv $@-t $@
-+MOSTLYCLEANFILES += stdio.h stdio.h-t
-+
-+EXTRA_DIST += stdio-write.c stdio.in.h
-+
-+EXTRA_libgnu_la_SOURCES += stdio-write.c
-+
-+## end   gnulib module stdio
-+
-+## begin gnulib module sys_socket
-+
-+BUILT_SOURCES += $(SYS_SOCKET_H)
-+
-+# We need the following in order to create <sys/socket.h> when the system
-+# doesn't have one that works with the given compiler.
-+sys/socket.h: sys_socket.in.h
-+      @MKDIR_P@ sys
-+      { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-+        sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-+            -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-+            -e 's|@''NEXT_SYS_SOCKET_H''@|$(NEXT_SYS_SOCKET_H)|g' \
-+            -e 's|@''HAVE_SYS_SOCKET_H''@|$(HAVE_SYS_SOCKET_H)|g' \
-+            -e 's|@''GNULIB_SOCKET''@|$(GNULIB_SOCKET)|g' \
-+            -e 's|@''GNULIB_CONNECT''@|$(GNULIB_CONNECT)|g' \
-+            -e 's|@''GNULIB_ACCEPT''@|$(GNULIB_ACCEPT)|g' \
-+            -e 's|@''GNULIB_BIND''@|$(GNULIB_BIND)|g' \
-+            -e 's|@''GNULIB_GETPEERNAME''@|$(GNULIB_GETPEERNAME)|g' \
-+            -e 's|@''GNULIB_GETSOCKNAME''@|$(GNULIB_GETSOCKNAME)|g' \
-+            -e 's|@''GNULIB_GETSOCKOPT''@|$(GNULIB_GETSOCKOPT)|g' \
-+            -e 's|@''GNULIB_LISTEN''@|$(GNULIB_LISTEN)|g' \
-+            -e 's|@''GNULIB_RECV''@|$(GNULIB_RECV)|g' \
-+            -e 's|@''GNULIB_SEND''@|$()GNULIB_SEND|g' \
-+            -e 's|@''GNULIB_RECVFROM''@|$(GNULIB_RECVFROM)|g' \
-+            -e 's|@''GNULIB_SENDTO''@|$(GNULIB_SENDTO)|g' \
-+            -e 's|@''GNULIB_SETSOCKOPT''@|$(GNULIB_SETSOCKOPT)|g' \
-+            -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \
-+            -e 's|@''HAVE_WS2TCPIP_H''@|$(HAVE_WS2TCPIP_H)|g' \
-+            -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
-+            < $(srcdir)/sys_socket.in.h; \
-+      } > $@-t
-+      mv -f $@-t $@
-+MOSTLYCLEANFILES += sys/socket.h sys/socket.h-t
-+MOSTLYCLEANDIRS += sys
-+
-+EXTRA_DIST += sys_socket.in.h winsock.c
-+
-+EXTRA_libgnu_la_SOURCES += winsock.c
-+
-+## end   gnulib module sys_socket
-+
-+## begin gnulib module vasnprintf
-+
-+
-+EXTRA_DIST += asnprintf.c float+.h printf-args.c printf-args.h printf-parse.c printf-parse.h vasnprintf.c vasnprintf.h
-+
-+EXTRA_libgnu_la_SOURCES += asnprintf.c printf-args.c printf-parse.c vasnprintf.c
-+
-+## end   gnulib module vasnprintf
-+
-+## begin gnulib module vc-list-files
-+
-+
-+EXTRA_DIST += $(top_srcdir)/./vc-list-files
-+
-+## end   gnulib module vc-list-files
-+
-+## begin gnulib module wchar
-+
-+BUILT_SOURCES += $(WCHAR_H)
-+
-+# We need the following in order to create <wchar.h> when the system
-+# version does not work standalone.
-+wchar.h: wchar.in.h
-+      rm -f $@-t $@
-+      { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-+        sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-+            -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-+            -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
-+            -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
-+            -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
-+            -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
-+            -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
-+            -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
-+            -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
-+          < $(srcdir)/wchar.in.h; \
-+      } > $@-t
-+      mv $@-t $@
-+MOSTLYCLEANFILES += wchar.h wchar.h-t
-+
-+EXTRA_DIST += wchar.in.h
-+
-+## end   gnulib module wchar
-+
-+## begin gnulib module xsize
-+
-+libgnu_la_SOURCES += xsize.h
-+
-+## end   gnulib module xsize
-+
-+## begin gnulib module dummy
-+
-+libgnu_la_SOURCES += dummy.c
-+
-+## end   gnulib module dummy
-+
-+
-+mostlyclean-local: mostlyclean-generic
-+      @for dir in '' $(MOSTLYCLEANDIRS); do \
-+        if test -n "$$dir" && test -d $$dir; then \
-+          echo "rmdir $$dir"; rmdir $$dir; \
-+        fi; \
-+      done; \
-+      :
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/netinet_in.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/netinet_in.in.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/netinet_in.in.h     1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/netinet_in.in.h    2008-10-09 12:24:39.000000000 +0100
-@@ -0,0 +1,45 @@
-+/* Substitute for <netinet/in.h>.
-+   Copyright (C) 2007-2008 Free Software Foundation, Inc.
-+
-+   This program is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as published by
-+   the Free Software Foundation; either version 2.1, or (at your option)
-+   any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program; if not, write to the Free Software Foundation,
-+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
-+
-+#ifndef _GL_NETINET_IN_H
-+
-+#if @HAVE_NETINET_IN_H@
-+
-+@PRAGMA_SYSTEM_HEADER@
-+
-+/* On many platforms, <netinet/in.h> assumes prior inclusion of
-+   <sys/types.h>.  */
-+# include <sys/types.h>
-+
-+/* The include_next requires a split double-inclusion guard.  */
-+# @INCLUDE_NEXT@ @NEXT_NETINET_IN_H@
-+
-+#endif
-+
-+#ifndef _GL_NETINET_IN_H
-+#define _GL_NETINET_IN_H
-+
-+#if !@HAVE_NETINET_IN_H@
-+
-+/* A platform that lacks <netinet/in.h>.  */
-+
-+# include <sys/socket.h>
-+
-+#endif
-+
-+#endif /* _GL_NETINET_IN_H */
-+#endif /* _GL_NETINET_IN_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/printf-args.c gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-args.c
---- gtk-vnc-0.3.7.mingw/gnulib/lib/printf-args.c       1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-args.c      2008-10-09 12:24:39.000000000 +0100
-@@ -0,0 +1,187 @@
-+/* Decomposed printf argument list.
-+   Copyright (C) 1999, 2002-2003, 2005-2007 Free Software Foundation, Inc.
-+
-+   This program is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as published by
-+   the Free Software Foundation; either version 2.1, or (at your option)
-+   any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License along
-+   with this program; if not, write to the Free Software Foundation,
-+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
-+
-+/* This file can be parametrized with the following macros:
-+     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
-+     PRINTF_FETCHARGS   Name of the function to be defined.
-+     STATIC             Set to 'static' to declare the function static.  */
-+
-+#ifndef PRINTF_FETCHARGS
-+# include <config.h>
-+#endif
-+
-+/* Specification.  */
-+#ifndef PRINTF_FETCHARGS
-+# include "printf-args.h"
-+#endif
-+
-+#ifdef STATIC
-+STATIC
-+#endif
-+int
-+PRINTF_FETCHARGS (va_list args, arguments *a)
-+{
-+  size_t i;
-+  argument *ap;
++#ifdef STATIC
++STATIC
++#endif
++int
++PRINTF_FETCHARGS (va_list args, arguments *a)
++{
++  size_t i;
++  argument *ap;
 +
 +  for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
 +    switch (ap->type)
@@ -2982,9 +2698,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/printf-args.c gtk-vnc-0.3.7.gnulib/gnul
 +      }
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/printf-args.h gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-args.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/printf-args.h       1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-args.h      2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/printf-args.h gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-args.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/printf-args.h        1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-args.h      2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,154 @@
 +/* Decomposed printf argument list.
 +   Copyright (C) 1999, 2002-2003, 2006-2007 Free Software Foundation, Inc.
@@ -3140,9 +2856,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/printf-args.h gtk-vnc-0.3.7.gnulib/gnul
 +int PRINTF_FETCHARGS (va_list args, arguments *a);
 +
 +#endif /* _PRINTF_ARGS_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/printf-parse.c gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-parse.c
---- gtk-vnc-0.3.7.mingw/gnulib/lib/printf-parse.c      1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-parse.c     2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/printf-parse.c gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-parse.c
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/printf-parse.c       1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-parse.c     2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,627 @@
 +/* Formatted output to strings.
 +   Copyright (C) 1999-2000, 2002-2003, 2006-2008 Free Software Foundation, Inc.
@@ -3771,9 +3487,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/printf-parse.c gtk-vnc-0.3.7.gnulib/gnu
 +#undef DIRECTIVE
 +#undef CHAR_T_ONLY_ASCII
 +#undef CHAR_T
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/printf-parse.h gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-parse.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/printf-parse.h      1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-parse.h     2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/printf-parse.h gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-parse.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/printf-parse.h       1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/printf-parse.h     2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,179 @@
 +/* Parse printf format string.
 +   Copyright (C) 1999, 2002-2003, 2005, 2007 Free Software Foundation, Inc.
@@ -3954,9 +3670,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/printf-parse.h gtk-vnc-0.3.7.gnulib/gnu
 +#endif
 +
 +#endif /* _PRINTF_PARSE_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/size_max.h gtk-vnc-0.3.7.gnulib/gnulib/lib/size_max.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/size_max.h  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/size_max.h 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/size_max.h gtk-vnc-0.3.7.gnulib/gnulib/lib/size_max.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/size_max.h   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/size_max.h 2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,31 @@
 +/* size_max.h -- declare SIZE_MAX through system headers
 +   Copyright (C) 2005-2006 Free Software Foundation, Inc.
@@ -3989,9 +3705,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/size_max.h gtk-vnc-0.3.7.gnulib/gnulib/
 +   in config.h.  */
 +
 +#endif /* GNULIB_SIZE_MAX_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/snprintf.c gtk-vnc-0.3.7.gnulib/gnulib/lib/snprintf.c
---- gtk-vnc-0.3.7.mingw/gnulib/lib/snprintf.c  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/snprintf.c 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/snprintf.c gtk-vnc-0.3.7.gnulib/gnulib/lib/snprintf.c
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/snprintf.c   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/snprintf.c 2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,72 @@
 +/* Formatted output to strings.
 +   Copyright (C) 2004, 2006-2008 Free Software Foundation, Inc.
@@ -4065,9 +3781,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/snprintf.c gtk-vnc-0.3.7.gnulib/gnulib/
 +
 +  return len;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/stdbool.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/stdbool.in.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/stdbool.in.h        1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/stdbool.in.h       2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/stdbool.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/stdbool.in.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/stdbool.in.h 1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/stdbool.in.h       2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,119 @@
 +/* Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc.
 +   Written by Bruno Haible <haible@clisp.cons.org>, 2001.
@@ -4188,9 +3904,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/stdbool.in.h gtk-vnc-0.3.7.gnulib/gnuli
 +#define __bool_true_false_are_defined 1
 +
 +#endif /* _GL_STDBOOL_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/stdint.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/stdint.in.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/stdint.in.h 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/stdint.in.h        2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/stdint.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/stdint.in.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/stdint.in.h  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/stdint.in.h        2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,523 @@
 +/* Copyright (C) 2001-2002, 2004-2008 Free Software Foundation, Inc.
 +   Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
@@ -4715,9 +4431,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/stdint.in.h gtk-vnc-0.3.7.gnulib/gnulib
 +
 +#endif /* _GL_STDINT_H */
 +#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/stdio.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/stdio.in.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/stdio.in.h  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/stdio.in.h 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/stdio.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/stdio.in.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/stdio.in.h   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/stdio.in.h 2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,475 @@
 +/* A GNU-like <stdio.h>.
 +
@@ -5194,9 +4910,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/stdio.in.h gtk-vnc-0.3.7.gnulib/gnulib/
 +#endif /* _GL_STDIO_H */
 +#endif /* _GL_STDIO_H */
 +#endif
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/stdio-write.c gtk-vnc-0.3.7.gnulib/gnulib/lib/stdio-write.c
---- gtk-vnc-0.3.7.mingw/gnulib/lib/stdio-write.c       1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/stdio-write.c      2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/stdio-write.c gtk-vnc-0.3.7.gnulib/gnulib/lib/stdio-write.c
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/stdio-write.c        1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/stdio-write.c      2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,148 @@
 +/* POSIX compatible FILE stream write function.
 +   Copyright (C) 2008 Free Software Foundation, Inc.
@@ -5262,93 +4978,339 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/stdio-write.c gtk-vnc-0.3.7.gnulib/gnul
 +      return ret;                                                           \
 +    }
 +
-+#  if !REPLACE_PRINTF_POSIX /* avoid collision with printf.c */
-+int
-+printf (const char *format, ...)
-+{
-+  int retval;
-+  va_list args;
++#  if !REPLACE_PRINTF_POSIX /* avoid collision with printf.c */
++int
++printf (const char *format, ...)
++{
++  int retval;
++  va_list args;
++
++  va_start (args, format);
++  retval = vfprintf (stdout, format, args);
++  va_end (args);
++
++  return retval;
++}
++#  endif
++
++#  if !REPLACE_FPRINTF_POSIX /* avoid collision with fprintf.c */
++int
++fprintf (FILE *stream, const char *format, ...)
++{
++  int retval;
++  va_list args;
++
++  va_start (args, format);
++  retval = vfprintf (stream, format, args);
++  va_end (args);
++
++  return retval;
++}
++#  endif
++
++#  if !REPLACE_VFPRINTF_POSIX /* avoid collision with vprintf.c */
++int
++vprintf (const char *format, va_list args)
++{
++  return vfprintf (stdout, format, args);
++}
++#  endif
++
++#  if !REPLACE_VPRINTF_POSIX /* avoid collision with vfprintf.c */
++int
++vfprintf (FILE *stream, const char *format, va_list args)
++#undef vfprintf
++{
++  CALL_WITH_SIGPIPE_EMULATION (int, vfprintf (stream, format, args), ret == EOF)
++}
++#  endif
++
++int
++putchar (int c)
++{
++  return fputc (c, stdout);
++}
++
++int
++fputc (int c, FILE *stream)
++#undef fputc
++{
++  CALL_WITH_SIGPIPE_EMULATION (int, fputc (c, stream), ret == EOF)
++}
++
++int
++fputs (const char *string, FILE *stream)
++#undef fputs
++{
++  CALL_WITH_SIGPIPE_EMULATION (int, fputs (string, stream), ret == EOF)
++}
++
++int
++puts (const char *string)
++#undef puts
++{
++  FILE *stream = stdout;
++  CALL_WITH_SIGPIPE_EMULATION (int, puts (string), ret == EOF)
++}
++
++size_t
++fwrite (const void *ptr, size_t s, size_t n, FILE *stream)
++#undef fwrite
++{
++  CALL_WITH_SIGPIPE_EMULATION (size_t, fwrite (ptr, s, n, stream), ret < n)
++}
++
++# endif
++#endif
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/stdlib.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/stdlib.in.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/stdlib.in.h  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/stdlib.in.h        2008-10-09 15:24:52.000000000 +0100
+@@ -0,0 +1,242 @@
++/* A GNU-like <stdlib.h>.
++
++   Copyright (C) 1995, 2001-2004, 2006-2008 Free Software Foundation, Inc.
++
++   This program is free software: you can redistribute it and/or modify
++   it under the terms of the GNU Lesser General Public License as published by
++   the Free Software Foundation; either version 2.1 of the License, or
++   (at your option) any later version.
++
++   This program is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public License
++   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
++
++@PRAGMA_SYSTEM_HEADER@
++
++#if defined __need_malloc_and_calloc
++/* Special invocation convention inside glibc header files.  */
++
++#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
++
++#else
++/* Normal invocation convention.  */
++
++#ifndef _GL_STDLIB_H
++
++/* The include_next requires a split double-inclusion guard.  */
++#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
++
++#ifndef _GL_STDLIB_H
++#define _GL_STDLIB_H
++
++
++/* The definition of GL_LINK_WARNING is copied here.  */
++
++
++/* Some systems do not define EXIT_*, despite otherwise supporting C89.  */
++#ifndef EXIT_SUCCESS
++# define EXIT_SUCCESS 0
++#endif
++/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere
++   with proper operation of xargs.  */
++#ifndef EXIT_FAILURE
++# define EXIT_FAILURE 1
++#elif EXIT_FAILURE != 1
++# undef EXIT_FAILURE
++# define EXIT_FAILURE 1
++#endif
++
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++
++#if @GNULIB_MALLOC_POSIX@
++# if !@HAVE_MALLOC_POSIX@
++#  undef malloc
++#  define malloc rpl_malloc
++extern void * malloc (size_t size);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef malloc
++# define malloc(s) \
++    (GL_LINK_WARNING ("malloc is not POSIX compliant everywhere - " \
++                      "use gnulib module malloc-posix for portability"), \
++     malloc (s))
++#endif
++
++
++#if @GNULIB_REALLOC_POSIX@
++# if !@HAVE_REALLOC_POSIX@
++#  undef realloc
++#  define realloc rpl_realloc
++extern void * realloc (void *ptr, size_t size);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef realloc
++# define realloc(p,s) \
++    (GL_LINK_WARNING ("realloc is not POSIX compliant everywhere - " \
++                      "use gnulib module realloc-posix for portability"), \
++     realloc (p, s))
++#endif
++
++
++#if @GNULIB_CALLOC_POSIX@
++# if !@HAVE_CALLOC_POSIX@
++#  undef calloc
++#  define calloc rpl_calloc
++extern void * calloc (size_t nmemb, size_t size);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef calloc
++# define calloc(n,s) \
++    (GL_LINK_WARNING ("calloc is not POSIX compliant everywhere - " \
++                      "use gnulib module calloc-posix for portability"), \
++     calloc (n, s))
++#endif
++
++
++#if @GNULIB_GETSUBOPT@
++/* Assuming *OPTIONP is a comma separated list of elements of the form
++   "token" or "token=value", getsubopt parses the first of these elements.
++   If the first element refers to a "token" that is member of the given
++   NULL-terminated array of tokens:
++     - It replaces the comma with a NUL byte, updates *OPTIONP to point past
++       the first option and the comma, sets *VALUEP to the value of the
++       element (or NULL if it doesn't contain an "=" sign),
++     - It returns the index of the "token" in the given array of tokens.
++   Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
++   For more details see the POSIX:2001 specification.
++   http://www.opengroup.org/susv3xsh/getsubopt.html */
++# if !@HAVE_GETSUBOPT@
++extern int getsubopt (char **optionp, char *const *tokens, char **valuep);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef getsubopt
++# define getsubopt(o,t,v) \
++    (GL_LINK_WARNING ("getsubopt is unportable - " \
++                      "use gnulib module getsubopt for portability"), \
++     getsubopt (o, t, v))
++#endif
++
++
++#if @GNULIB_MKDTEMP@
++# if !@HAVE_MKDTEMP@
++/* Create a unique temporary directory from TEMPLATE.
++   The last six characters of TEMPLATE must be "XXXXXX";
++   they are replaced with a string that makes the directory name unique.
++   Returns TEMPLATE, or a null pointer if it cannot get a unique name.
++   The directory is created mode 700.  */
++extern char * mkdtemp (char * /*template*/);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef mkdtemp
++# define mkdtemp(t) \
++    (GL_LINK_WARNING ("mkdtemp is unportable - " \
++                      "use gnulib module mkdtemp for portability"), \
++     mkdtemp (t))
++#endif
++
++
++#if @GNULIB_MKSTEMP@
++# if @REPLACE_MKSTEMP@
++/* Create a unique temporary file from TEMPLATE.
++   The last six characters of TEMPLATE must be "XXXXXX";
++   they are replaced with a string that makes the file name unique.
++   The file is then created, ensuring it didn't exist before.
++   The file is created read-write (mask at least 0600 & ~umask), but it may be
++   world-readable and world-writable (mask 0666 & ~umask), depending on the
++   implementation.
++   Returns the open file descriptor if successful, otherwise -1 and errno
++   set.  */
++#  define mkstemp rpl_mkstemp
++extern int mkstemp (char * /*template*/);
++# else
++/* On MacOS X 10.3, only <unistd.h> declares mkstemp.  */
++#  include <unistd.h>
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef mkstemp
++# define mkstemp(t) \
++    (GL_LINK_WARNING ("mkstemp is unportable - " \
++                      "use gnulib module mkstemp for portability"), \
++     mkstemp (t))
++#endif
++
 +
-+  va_start (args, format);
-+  retval = vfprintf (stdout, format, args);
-+  va_end (args);
++#if @GNULIB_PUTENV@
++# if @REPLACE_PUTENV@
++#  undef putenv
++#  define putenv rpl_putenv
++extern int putenv (char *string);
++# endif
++#endif
 +
-+  return retval;
-+}
-+#  endif
 +
-+#  if !REPLACE_FPRINTF_POSIX /* avoid collision with fprintf.c */
-+int
-+fprintf (FILE *stream, const char *format, ...)
-+{
-+  int retval;
-+  va_list args;
++#if @GNULIB_RPMATCH@
++# if !@HAVE_RPMATCH@
++/* Test a user response to a question.
++   Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear.  */
++extern int rpmatch (const char *response);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef rpmatch
++# define rpmatch(r) \
++    (GL_LINK_WARNING ("rpmatch is unportable - " \
++                      "use gnulib module rpmatch for portability"), \
++     rpmatch (r))
++#endif
 +
-+  va_start (args, format);
-+  retval = vfprintf (stream, format, args);
-+  va_end (args);
 +
-+  return retval;
-+}
-+#  endif
++#if @GNULIB_SETENV@
++# if !@HAVE_SETENV@
++/* Set NAME to VALUE in the environment.
++   If REPLACE is nonzero, overwrite an existing value.  */
++extern int setenv (const char *name, const char *value, int replace);
++# endif
++#endif
 +
-+#  if !REPLACE_VFPRINTF_POSIX /* avoid collision with vprintf.c */
-+int
-+vprintf (const char *format, va_list args)
-+{
-+  return vfprintf (stdout, format, args);
-+}
-+#  endif
 +
-+#  if !REPLACE_VPRINTF_POSIX /* avoid collision with vfprintf.c */
-+int
-+vfprintf (FILE *stream, const char *format, va_list args)
-+#undef vfprintf
-+{
-+  CALL_WITH_SIGPIPE_EMULATION (int, vfprintf (stream, format, args), ret == EOF)
-+}
++#if @GNULIB_UNSETENV@
++# if @HAVE_UNSETENV@
++#  if @VOID_UNSETENV@
++/* On some systems, unsetenv() returns void.
++   This is the case for MacOS X 10.3, FreeBSD 4.8, NetBSD 1.6, OpenBSD 3.4.  */
++#   define unsetenv(name) ((unsetenv)(name), 0)
 +#  endif
++# else
++/* Remove the variable NAME from the environment.  */
++extern int unsetenv (const char *name);
++# endif
++#endif
 +
-+int
-+putchar (int c)
-+{
-+  return fputc (c, stdout);
-+}
-+
-+int
-+fputc (int c, FILE *stream)
-+#undef fputc
-+{
-+  CALL_WITH_SIGPIPE_EMULATION (int, fputc (c, stream), ret == EOF)
-+}
 +
-+int
-+fputs (const char *string, FILE *stream)
-+#undef fputs
-+{
-+  CALL_WITH_SIGPIPE_EMULATION (int, fputs (string, stream), ret == EOF)
-+}
++#if @GNULIB_STRTOD@
++# if @REPLACE_STRTOD@
++#  define strtod rpl_strtod
++# endif
++# if !@HAVE_STRTOD@ || @REPLACE_STRTOD@
++ /* Parse a double from STRING, updating ENDP if appropriate.  */
++extern double strtod (const char *str, char **endp);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef strtod
++# define strtod(s, e)                           \
++    (GL_LINK_WARNING ("strtod is unportable - " \
++                      "use gnulib module strtod for portability"), \
++     strtod (s, e))
++#endif
 +
-+int
-+puts (const char *string)
-+#undef puts
-+{
-+  FILE *stream = stdout;
-+  CALL_WITH_SIGPIPE_EMULATION (int, puts (string), ret == EOF)
-+}
 +
-+size_t
-+fwrite (const void *ptr, size_t s, size_t n, FILE *stream)
-+#undef fwrite
-+{
-+  CALL_WITH_SIGPIPE_EMULATION (size_t, fwrite (ptr, s, n, stream), ret < n)
++#ifdef __cplusplus
 +}
++#endif
 +
-+# endif
++#endif /* _GL_STDLIB_H */
++#endif /* _GL_STDLIB_H */
 +#endif
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/sys_socket.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/sys_socket.in.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/sys_socket.in.h     1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/sys_socket.in.h    2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/sys_socket.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/sys_socket.in.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/sys_socket.in.h      1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/sys_socket.in.h    2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,386 @@
 +/* Provide a sys/socket header file for systems lacking it (read: MinGW)
 +   and for systems where it is incomplete.
@@ -5736,9 +5698,401 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/sys_socket.in.h gtk-vnc-0.3.7.gnulib/gn
 +
 +#endif /* _GL_SYS_SOCKET_H */
 +#endif /* _GL_SYS_SOCKET_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/vasnprintf.c gtk-vnc-0.3.7.gnulib/gnulib/lib/vasnprintf.c
---- gtk-vnc-0.3.7.mingw/gnulib/lib/vasnprintf.c        1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/vasnprintf.c       2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/unistd.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/unistd.in.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/unistd.in.h  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/unistd.in.h        2008-10-09 15:24:52.000000000 +0100
+@@ -0,0 +1,388 @@
++/* Substitute for and wrapper around <unistd.h>.
++   Copyright (C) 2004-2008 Free Software Foundation, Inc.
++
++   This program is free software; you can redistribute it and/or modify
++   it under the terms of the GNU Lesser General Public License as published by
++   the Free Software Foundation; either version 2.1, or (at your option)
++   any later version.
++
++   This program is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public License
++   along with this program; if not, write to the Free Software Foundation,
++   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
++
++#ifndef _GL_UNISTD_H
++
++@PRAGMA_SYSTEM_HEADER@
++
++/* The include_next requires a split double-inclusion guard.  */
++#if @HAVE_UNISTD_H@
++# @INCLUDE_NEXT@ @NEXT_UNISTD_H@
++#endif
++
++#ifndef _GL_UNISTD_H
++#define _GL_UNISTD_H
++
++/* mingw doesn't define the SEEK_* macros in <unistd.h>.  */
++#if !(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET)
++# include <stdio.h>
++#endif
++
++/* mingw fails to declare _exit in <unistd.h>.  */
++#include <stdlib.h>
++
++#if @GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@
++/* Get ssize_t.  */
++# include <sys/types.h>
++#endif
++
++/* The definition of GL_LINK_WARNING is copied here.  */
++
++
++/* Declare overridden functions.  */
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++
++#if @GNULIB_CHOWN@
++# if @REPLACE_CHOWN@
++#  ifndef REPLACE_CHOWN
++#   define REPLACE_CHOWN 1
++#  endif
++#  if REPLACE_CHOWN
++/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
++   to GID (if GID is not -1).  Follow symbolic links.
++   Return 0 if successful, otherwise -1 and errno set.
++   See the POSIX:2001 specification
++   <http://www.opengroup.org/susv3xsh/chown.html>.  */
++#   define chown rpl_chown
++extern int chown (const char *file, uid_t uid, gid_t gid);
++#  endif
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef chown
++# define chown(f,u,g) \
++    (GL_LINK_WARNING ("chown fails to follow symlinks on some systems and " \
++                      "doesn't treat a uid or gid of -1 on some systems - " \
++                      "use gnulib module chown for portability"), \
++     chown (f, u, g))
++#endif
++
++
++#if @GNULIB_DUP2@
++# if !@HAVE_DUP2@
++/* Copy the file descriptor OLDFD into file descriptor NEWFD.  Do nothing if
++   NEWFD = OLDFD, otherwise close NEWFD first if it is open.
++   Return 0 if successful, otherwise -1 and errno set.
++   See the POSIX:2001 specification
++   <http://www.opengroup.org/susv3xsh/dup2.html>.  */
++extern int dup2 (int oldfd, int newfd);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef dup2
++# define dup2(o,n) \
++    (GL_LINK_WARNING ("dup2 is unportable - " \
++                      "use gnulib module dup2 for portability"), \
++     dup2 (o, n))
++#endif
++
++
++#if @GNULIB_ENVIRON@
++# if !@HAVE_DECL_ENVIRON@
++/* Set of environment variables and values.  An array of strings of the form
++   "VARIABLE=VALUE", terminated with a NULL.  */
++#  if defined __APPLE__ && defined __MACH__
++#   include <crt_externs.h>
++#   define environ (*_NSGetEnviron ())
++#  else
++extern char **environ;
++#  endif
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef environ
++# define environ \
++    (GL_LINK_WARNING ("environ is unportable - " \
++                      "use gnulib module environ for portability"), \
++     environ)
++#endif
++
++
++#if @GNULIB_FCHDIR@
++# if @REPLACE_FCHDIR@
++
++/* Change the process' current working directory to the directory on which
++   the given file descriptor is open.
++   Return 0 if successful, otherwise -1 and errno set.
++   See the POSIX:2001 specification
++   <http://www.opengroup.org/susv3xsh/fchdir.html>.  */
++extern int fchdir (int /*fd*/);
++
++#  define close rpl_close
++extern int close (int);
++#  define dup rpl_dup
++extern int dup (int);
++#  define dup2 rpl_dup2
++extern int dup2 (int, int);
++
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef fchdir
++# define fchdir(f) \
++    (GL_LINK_WARNING ("fchdir is unportable - " \
++                      "use gnulib module fchdir for portability"), \
++     fchdir (f))
++#endif
++
++
++#if @GNULIB_FSYNC@
++/* Synchronize changes to a file.
++   Return 0 if successful, otherwise -1 and errno set.
++   See POSIX:2001 specification
++   <http://www.opengroup.org/susv3xsh/fsync.html>.  */
++# if !@HAVE_FSYNC@
++extern int fsync (int fd);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef fsync
++# define fsync(fd) \
++    (GL_LINK_WARNING ("fsync is unportable - " \
++                      "use gnulib module fsync for portability"), \
++     fsync (fd))
++#endif
++
++
++#if @GNULIB_FTRUNCATE@
++# if !@HAVE_FTRUNCATE@
++/* Change the size of the file to which FD is opened to become equal to LENGTH.
++   Return 0 if successful, otherwise -1 and errno set.
++   See the POSIX:2001 specification
++   <http://www.opengroup.org/susv3xsh/ftruncate.html>.  */
++extern int ftruncate (int fd, off_t length);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef ftruncate
++# define ftruncate(f,l) \
++    (GL_LINK_WARNING ("ftruncate is unportable - " \
++                      "use gnulib module ftruncate for portability"), \
++     ftruncate (f, l))
++#endif
++
++
++#if @GNULIB_GETCWD@
++/* Include the headers that might declare getcwd so that they will not
++   cause confusion if included after this file.  */
++# include <stdlib.h>
++# if @REPLACE_GETCWD@
++/* Get the name of the current working directory, and put it in SIZE bytes
++   of BUF.
++   Return BUF if successful, or NULL if the directory couldn't be determined
++   or SIZE was too small.
++   See the POSIX:2001 specification
++   <http://www.opengroup.org/susv3xsh/getcwd.html>.
++   Additionally, the gnulib module 'getcwd' guarantees the following GNU
++   extension: If BUF is NULL, an array is allocated with 'malloc'; the array
++   is SIZE bytes long, unless SIZE == 0, in which case it is as big as
++   necessary.  */
++#  define getcwd rpl_getcwd
++extern char * getcwd (char *buf, size_t size);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef getcwd
++# define getcwd(b,s) \
++    (GL_LINK_WARNING ("getcwd is unportable - " \
++                      "use gnulib module getcwd for portability"), \
++     getcwd (b, s))
++#endif
++
++
++#if @GNULIB_GETDTABLESIZE@
++# if !@HAVE_GETDTABLESIZE@
++/* Return the maximum number of file descriptors in the current process.  */
++extern int getdtablesize (void);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef getdtablesize
++# define getdtablesize() \
++    (GL_LINK_WARNING ("getdtablesize is unportable - " \
++                      "use gnulib module getdtablesize for portability"), \
++     getdtablesize ())
++#endif
++
++
++#if @GNULIB_GETLOGIN_R@
++/* Copies the user's login name to NAME.
++   The array pointed to by NAME has room for SIZE bytes.
++
++   Returns 0 if successful.  Upon error, an error number is returned, or -1 in
++   the case that the login name cannot be found but no specific error is
++   provided (this case is hopefully rare but is left open by the POSIX spec).
++
++   See <http://www.opengroup.org/susv3xsh/getlogin.html>.
++ */
++# if !@HAVE_DECL_GETLOGIN_R@
++#  include <stddef.h>
++extern int getlogin_r (char *name, size_t size);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef getlogin_r
++# define getlogin_r(n,s) \
++    (GL_LINK_WARNING ("getlogin_r is unportable - " \
++                      "use gnulib module getlogin_r for portability"), \
++     getlogin_r (n, s))
++#endif
++
++
++#if @GNULIB_GETPAGESIZE@
++# if @REPLACE_GETPAGESIZE@
++#  define getpagesize rpl_getpagesize
++extern int getpagesize (void);
++# elif !@HAVE_GETPAGESIZE@
++/* This is for POSIX systems.  */
++#  if !defined getpagesize && defined _SC_PAGESIZE
++#   if ! (defined __VMS && __VMS_VER < 70000000)
++#    define getpagesize() sysconf (_SC_PAGESIZE)
++#   endif
++#  endif
++/* This is for older VMS.  */
++#  if !defined getpagesize && defined __VMS
++#   ifdef __ALPHA
++#    define getpagesize() 8192
++#   else
++#    define getpagesize() 512
++#   endif
++#  endif
++/* This is for BeOS.  */
++#  if !defined getpagesize && @HAVE_OS_H@
++#   include <OS.h>
++#   if defined B_PAGE_SIZE
++#    define getpagesize() B_PAGE_SIZE
++#   endif
++#  endif
++/* This is for AmigaOS4.0.  */
++#  if !defined getpagesize && defined __amigaos4__
++#   define getpagesize() 2048
++#  endif
++/* This is for older Unix systems.  */
++#  if !defined getpagesize && @HAVE_SYS_PARAM_H@
++#   include <sys/param.h>
++#   ifdef EXEC_PAGESIZE
++#    define getpagesize() EXEC_PAGESIZE
++#   else
++#    ifdef NBPG
++#     ifndef CLSIZE
++#      define CLSIZE 1
++#     endif
++#     define getpagesize() (NBPG * CLSIZE)
++#    else
++#     ifdef NBPC
++#      define getpagesize() NBPC
++#     endif
++#    endif
++#   endif
++#  endif
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef getpagesize
++# define getpagesize() \
++    (GL_LINK_WARNING ("getpagesize is unportable - " \
++                      "use gnulib module getpagesize for portability"), \
++     getpagesize ())
++#endif
++
++
++#if @GNULIB_LCHOWN@
++# if @REPLACE_LCHOWN@
++/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
++   to GID (if GID is not -1).  Do not follow symbolic links.
++   Return 0 if successful, otherwise -1 and errno set.
++   See the POSIX:2001 specification
++   <http://www.opengroup.org/susv3xsh/lchown.html>.  */
++#  define lchown rpl_lchown
++extern int lchown (char const *file, uid_t owner, gid_t group);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef lchown
++# define lchown(f,u,g) \
++    (GL_LINK_WARNING ("lchown is unportable to pre-POSIX.1-2001 " \
++                      "systems - use gnulib module lchown for portability"), \
++     lchown (f, u, g))
++#endif
++
++
++#if @GNULIB_LSEEK@
++# if @REPLACE_LSEEK@
++/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
++   Return the new offset if successful, otherwise -1 and errno set.
++   See the POSIX:2001 specification
++   <http://www.opengroup.org/susv3xsh/lseek.html>.  */
++#  define lseek rpl_lseek
++   extern off_t lseek (int fd, off_t offset, int whence);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef lseek
++# define lseek(f,o,w) \
++    (GL_LINK_WARNING ("lseek does not fail with ESPIPE on pipes on some " \
++                      "systems - use gnulib module lseek for portability"), \
++     lseek (f, o, w))
++#endif
++
++
++#if @GNULIB_READLINK@
++/* Read the contents of the symbolic link FILE and place the first BUFSIZE
++   bytes of it into BUF.  Return the number of bytes placed into BUF if
++   successful, otherwise -1 and errno set.
++   See the POSIX:2001 specification
++   <http://www.opengroup.org/susv3xsh/readlink.html>.  */
++# if !@HAVE_READLINK@
++#  include <stddef.h>
++extern int readlink (const char *file, char *buf, size_t bufsize);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef readlink
++# define readlink(f,b,s) \
++    (GL_LINK_WARNING ("readlink is unportable - " \
++                      "use gnulib module readlink for portability"), \
++     readlink (f, b, s))
++#endif
++
++
++#if @GNULIB_SLEEP@
++/* Pause the execution of the current thread for N seconds.
++   Returns the number of seconds left to sleep.
++   See the POSIX:2001 specification
++   <http://www.opengroup.org/susv3xsh/sleep.html>.  */
++# if !@HAVE_SLEEP@
++extern unsigned int sleep (unsigned int n);
++# endif
++#elif defined GNULIB_POSIXCHECK
++# undef sleep
++# define sleep(n) \
++    (GL_LINK_WARNING ("sleep is unportable - " \
++                      "use gnulib module sleep for portability"), \
++     sleep (n))
++#endif
++
++
++#if @GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@
++/* Write up to COUNT bytes starting at BUF to file descriptor FD.
++   See the POSIX:2001 specification
++   <http://www.opengroup.org/susv3xsh/write.html>.  */
++# undef write
++# define write rpl_write
++extern ssize_t write (int fd, const void *buf, size_t count);
++#endif
++
++
++#ifdef __cplusplus
++}
++#endif
++
++
++#endif /* _GL_UNISTD_H */
++#endif /* _GL_UNISTD_H */
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/vasnprintf.c gtk-vnc-0.3.7.gnulib/gnulib/lib/vasnprintf.c
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/vasnprintf.c 1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/vasnprintf.c       2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,4887 @@
 +/* vsprintf with automatic memory allocation.
 +   Copyright (C) 1999, 2002-2008 Free Software Foundation, Inc.
@@ -10627,9 +10981,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/vasnprintf.c gtk-vnc-0.3.7.gnulib/gnuli
 +#undef DCHAR_T
 +#undef FCHAR_T
 +#undef VASNPRINTF
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/vasnprintf.h gtk-vnc-0.3.7.gnulib/gnulib/lib/vasnprintf.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/vasnprintf.h        1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/vasnprintf.h       2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/vasnprintf.h gtk-vnc-0.3.7.gnulib/gnulib/lib/vasnprintf.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/vasnprintf.h 1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/vasnprintf.h       2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,81 @@
 +/* vsprintf with automatic memory allocation.
 +   Copyright (C) 2002-2004, 2007-2008 Free Software Foundation, Inc.
@@ -10712,9 +11066,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/vasnprintf.h gtk-vnc-0.3.7.gnulib/gnuli
 +#endif
 +
 +#endif /* _VASNPRINTF_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/wchar.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/wchar.in.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/wchar.in.h  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/wchar.in.h 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/wchar.in.h gtk-vnc-0.3.7.gnulib/gnulib/lib/wchar.in.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/wchar.in.h   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/wchar.in.h 2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,99 @@
 +/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
 +
@@ -10815,9 +11169,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/wchar.in.h gtk-vnc-0.3.7.gnulib/gnulib/
 +#endif /* _GL_WCHAR_H */
 +#endif /* _GL_WCHAR_H */
 +#endif
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/winsock.c gtk-vnc-0.3.7.gnulib/gnulib/lib/winsock.c
---- gtk-vnc-0.3.7.mingw/gnulib/lib/winsock.c   1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/winsock.c  2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/winsock.c gtk-vnc-0.3.7.gnulib/gnulib/lib/winsock.c
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/winsock.c    1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/winsock.c  2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,308 @@
 +/* winsock.c --- wrappers for Windows socket functions
 +
@@ -11127,9 +11481,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/winsock.c gtk-vnc-0.3.7.gnulib/gnulib/l
 +  return r;
 +}
 +#endif
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/xsize.h gtk-vnc-0.3.7.gnulib/gnulib/lib/xsize.h
---- gtk-vnc-0.3.7.mingw/gnulib/lib/xsize.h     1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/lib/xsize.h    2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/lib/xsize.h gtk-vnc-0.3.7.gnulib/gnulib/lib/xsize.h
+--- gtk-vnc-0.3.7.dan3/gnulib/lib/xsize.h      1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/lib/xsize.h    2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,108 @@
 +/* xsize.h -- Checked size_t computations.
 +
@@ -11239,9 +11593,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/lib/xsize.h gtk-vnc-0.3.7.gnulib/gnulib/lib
 +  ((SIZE) != SIZE_MAX)
 +
 +#endif /* _XSIZE_H */
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/alloca.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/alloca.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/alloca.m4    1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/alloca.m4   2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/alloca.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/alloca.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/alloca.m4     1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/alloca.m4   2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,46 @@
 +# alloca.m4 serial 8
 +dnl Copyright (C) 2002-2004, 2006, 2007 Free Software Foundation, Inc.
@@ -11289,9 +11643,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/alloca.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4
 +# Prerequisites of lib/alloca.c.
 +# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA.
 +AC_DEFUN([gl_PREREQ_ALLOCA], [:])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/arpa_inet_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/arpa_inet_h.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/arpa_inet_h.m4       1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/arpa_inet_h.m4      2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/arpa_inet_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/arpa_inet_h.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/arpa_inet_h.m4        1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/arpa_inet_h.m4      2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,50 @@
 +# arpa_inet_h.m4 serial 5
 +dnl Copyright (C) 2006, 2008 Free Software Foundation, Inc.
@@ -11343,9 +11697,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/arpa_inet_h.m4 gtk-vnc-0.3.7.gnulib/gnul
 +  HAVE_DECL_INET_PTON=1;  AC_SUBST([HAVE_DECL_INET_PTON])
 +  ARPA_INET_H='';         AC_SUBST([ARPA_INET_H])
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/errno_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/errno_h.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/errno_h.m4   1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/errno_h.m4  2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/errno_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/errno_h.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/errno_h.m4    1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/errno_h.m4  2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,113 @@
 +# errno_h.m4 serial 1
 +dnl Copyright (C) 2004, 2006, 2008 Free Software Foundation, Inc.
@@ -11460,9 +11814,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/errno_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m
 +    AC_SUBST($1[_VALUE])
 +  fi
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/extensions.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/extensions.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/extensions.m4        1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/extensions.m4       2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/extensions.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/extensions.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/extensions.m4 1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/extensions.m4       2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,82 @@
 +# serial 5  -*- Autoconf -*-
 +# Enable extensions on systems that normally disable them.
@@ -11546,9 +11900,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/extensions.m4 gtk-vnc-0.3.7.gnulib/gnuli
 +# typically due to standards-conformance issues.
 +AC_DEFUN([gl_USE_SYSTEM_EXTENSIONS],
 +  [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/float_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/float_h.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/float_h.m4   1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/float_h.m4  2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/float_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/float_h.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/float_h.m4    1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/float_h.m4  2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,19 @@
 +# float_h.m4 serial 3
 +dnl Copyright (C) 2007 Free Software Foundation, Inc.
@@ -11569,9 +11923,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/float_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m
 +  esac
 +  AC_SUBST([FLOAT_H])
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/getaddrinfo.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/getaddrinfo.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/getaddrinfo.m4       1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/getaddrinfo.m4      2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/getaddrinfo.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/getaddrinfo.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/getaddrinfo.m4        1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/getaddrinfo.m4      2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,130 @@
 +# getaddrinfo.m4 serial 15
 +dnl Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
@@ -11700,59 +12054,13 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/getaddrinfo.m4 gtk-vnc-0.3.7.gnulib/gnul
 +#endif
 +#ifdef HAVE_WS2TCPIP_H
 +#include <ws2tcpip.h>
-+#endif
-+])
-+])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-cache.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-cache.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-cache.m4      1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-cache.m4     2008-10-09 12:33:42.000000000 +0100
-@@ -0,0 +1,42 @@
-+# Copyright (C) 2002-2008 Free Software Foundation, Inc.
-+#
-+# This file is free software, distributed under the terms of the GNU
-+# General Public License.  As a special exception to the GNU General
-+# Public License, this file may be distributed as part of a program
-+# that contains a configuration script generated by Autoconf, under
-+# the same distribution terms as the rest of that program.
-+#
-+# Generated by gnulib-tool.
-+#
-+# This file represents the specification of how gnulib-tool is used.
-+# It acts as a cache: It is written and read by gnulib-tool.
-+# In projects using CVS, this file is meant to be stored in CVS,
-+# like the configure.ac and various Makefile.am files.
-+
-+
-+# Specification in the form of a command-line invocation:
-+#   gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --tests-base=gnulib/tests --aux-dir=. --with-tests --lgpl=2 --libtool --macro-prefix=gl connect getaddrinfo recv send socket vc-list-files
-+
-+# Specification in the form of a few gnulib-tool.m4 macro invocations:
-+gl_LOCAL_DIR([])
-+gl_MODULES([
-+  connect
-+  getaddrinfo
-+  recv
-+  send
-+  socket
-+  vc-list-files
-+])
-+gl_AVOID([])
-+gl_SOURCE_BASE([gnulib/lib])
-+gl_M4_BASE([gnulib/m4])
-+gl_PO_BASE([])
-+gl_DOC_BASE([doc])
-+gl_TESTS_BASE([gnulib/tests])
-+gl_WITH_TESTS
-+gl_LIB([libgnu])
-+gl_LGPL([2])
-+gl_MAKEFILE_NAME([])
-+gl_LIBTOOL
-+gl_MACRO_PREFIX([gl])
-+gl_PO_DOMAIN([])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-cache.m4~ gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-cache.m4~
---- gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-cache.m4~     1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-cache.m4~    2008-10-09 12:24:40.000000000 +0100
-@@ -0,0 +1,38 @@
++#endif
++])
++])
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/gnulib-cache.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-cache.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/gnulib-cache.m4       1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-cache.m4     2008-10-09 15:24:53.000000000 +0100
+@@ -0,0 +1,43 @@
 +# Copyright (C) 2002-2008 Free Software Foundation, Inc.
 +#
 +# This file is free software, distributed under the terms of the GNU
@@ -11770,12 +12078,17 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-cache.m4~ gtk-vnc-0.3.7.gnulib/gn
 +
 +
 +# Specification in the form of a command-line invocation:
-+#   gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --tests-base=gnulib/tests --aux-dir=. --with-tests --lgpl=2 --libtool --macro-prefix=gl getaddrinfo vc-list-files
++#   gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --tests-base=gnulib/tests --aux-dir=. --with-tests --lgpl=2 --libtool --macro-prefix=gl connect getaddrinfo malloc recv send socket vc-list-files
 +
 +# Specification in the form of a few gnulib-tool.m4 macro invocations:
 +gl_LOCAL_DIR([])
 +gl_MODULES([
++  connect
 +  getaddrinfo
++  malloc
++  recv
++  send
++  socket
 +  vc-list-files
 +])
 +gl_AVOID([])
@@ -11791,9 +12104,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-cache.m4~ gtk-vnc-0.3.7.gnulib/gn
 +gl_LIBTOOL
 +gl_MACRO_PREFIX([gl])
 +gl_PO_DOMAIN([])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-common.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-common.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-common.m4     1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-common.m4    2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/gnulib-common.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-common.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/gnulib-common.m4      1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-common.m4    2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,91 @@
 +# gnulib-common.m4 serial 5
 +dnl Copyright (C) 2007-2008 Free Software Foundation, Inc.
@@ -11853,347 +12166,43 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-common.m4 gtk-vnc-0.3.7.gnulib/gn
 +[AC_CACHE_CHECK([for C/C++ restrict keyword], ac_cv_c_restrict,
 +  [ac_cv_c_restrict=no
 +   # The order here caters to the fact that C++ does not require restrict.
-+   for ac_kw in __restrict __restrict__ _Restrict restrict; do
-+     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
-+      [[typedef int * int_ptr;
-+      int foo (int_ptr $ac_kw ip) {
-+      return ip[0];
-+       }]],
-+      [[int s[1];
-+      int * $ac_kw t = s;
-+      t[0] = 0;
-+      return foo(t)]])],
-+      [ac_cv_c_restrict=$ac_kw])
-+     test "$ac_cv_c_restrict" != no && break
-+   done
-+  ])
-+ AH_VERBATIM([restrict],
-+[/* Define to the equivalent of the C99 'restrict' keyword, or to
-+   nothing if this is not supported.  Do not define if restrict is
-+   supported directly.  */
-+#undef restrict
-+/* Work around a bug in Sun C++: it does not support _Restrict, even
-+   though the corresponding Sun C compiler does, which causes
-+   "#define restrict _Restrict" in the previous line.  Perhaps some future
-+   version of Sun C++ will work with _Restrict; if so, it'll probably
-+   define __RESTRICT, just as Sun C does.  */
-+#if defined __SUNPRO_CC && !defined __RESTRICT
-+# define _Restrict
-+#endif])
-+ case $ac_cv_c_restrict in
-+   restrict) ;;
-+   no) AC_DEFINE([restrict], []) ;;
-+   *)  AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
-+ esac
-+])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-comp.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-comp.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-comp.m4       1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-comp.m4      2008-10-09 12:33:42.000000000 +0100
-@@ -0,0 +1,300 @@
-+# DO NOT EDIT! GENERATED AUTOMATICALLY!
-+# Copyright (C) 2002-2008 Free Software Foundation, Inc.
-+#
-+# This file is free software, distributed under the terms of the GNU
-+# General Public License.  As a special exception to the GNU General
-+# Public License, this file may be distributed as part of a program
-+# that contains a configuration script generated by Autoconf, under
-+# the same distribution terms as the rest of that program.
-+#
-+# Generated by gnulib-tool.
-+#
-+# This file represents the compiled summary of the specification in
-+# gnulib-cache.m4. It lists the computed macro invocations that need
-+# to be invoked from configure.ac.
-+# In projects using CVS, this file can be treated like other built files.
-+
-+
-+# This macro should be invoked from ./configure.ac, in the section
-+# "Checks for programs", right after AC_PROG_CC, and certainly before
-+# any checks for libraries, header files, types and library functions.
-+AC_DEFUN([gl_EARLY],
-+[
-+  m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
-+  m4_pattern_allow([^gl_ES$])dnl a valid locale name
-+  m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
-+  m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
-+  AC_REQUIRE([AC_PROG_RANLIB])
-+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-+])
-+
-+# This macro should be invoked from ./configure.ac, in the section
-+# "Check for header files, types and library functions".
-+AC_DEFUN([gl_INIT],
-+[
-+  AM_CONDITIONAL([GL_COND_LIBTOOL], [true])
-+  gl_cond_libtool=true
-+  m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
-+  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
-+  m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
-+  m4_pushdef([gl_LIBSOURCES_LIST], [])
-+  m4_pushdef([gl_LIBSOURCES_DIR], [])
-+  gl_COMMON
-+  gl_source_base='gnulib/lib'
-+  gl_FUNC_ALLOCA
-+  gl_HEADER_ARPA_INET
-+  AC_PROG_MKDIR_P
-+  AC_REQUIRE([gl_HEADER_SYS_SOCKET])
-+  if test "$ac_cv_header_winsock2_h" = yes; then
-+    AC_LIBOBJ([winsock])
-+  fi
-+  gl_SYS_SOCKET_MODULE_INDICATOR([connect])
-+  gl_HEADER_ERRNO_H
-+  gl_FLOAT_H
-+  gl_GETADDRINFO
-+  AC_SUBST([LIBINTL])
-+  AC_SUBST([LTLIBINTL])
-+  gl_INET_NTOP
-+  gl_ARPA_INET_MODULE_INDICATOR([inet_ntop])
-+  gl_HEADER_NETINET_IN
-+  AC_PROG_MKDIR_P
-+  AC_REQUIRE([gl_HEADER_SYS_SOCKET])
-+  if test "$ac_cv_header_winsock2_h" = yes; then
-+    AC_LIBOBJ([winsock])
-+  fi
-+  gl_SYS_SOCKET_MODULE_INDICATOR([recv])
-+  AC_REQUIRE([gl_HEADER_SYS_SOCKET])
-+  if test "$ac_cv_header_winsock2_h" = yes; then
-+    AC_LIBOBJ([winsock])
-+  fi
-+  gl_SYS_SOCKET_MODULE_INDICATOR([send])
-+  gl_SIZE_MAX
-+  gl_FUNC_SNPRINTF
-+  gl_STDIO_MODULE_INDICATOR([snprintf])
-+  AC_REQUIRE([gl_HEADER_SYS_SOCKET])
-+  if test "$ac_cv_header_winsock2_h" = yes; then
-+    AC_LIBOBJ([winsock])
-+  fi
-+  gl_SYS_SOCKET_MODULE_INDICATOR([socket])
-+  gl_TYPE_SOCKLEN_T
-+  AM_STDBOOL_H
-+  gl_STDINT_H
-+  gl_STDIO_H
-+  gl_HEADER_SYS_SOCKET
-+  AC_PROG_MKDIR_P
-+  gl_FUNC_VASNPRINTF
-+  gl_WCHAR_H
-+  gl_XSIZE
-+  m4_ifval(gl_LIBSOURCES_LIST, [
-+    m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
-+      for gl_file in ]gl_LIBSOURCES_LIST[ ; do
-+        if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then
-+          echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2
-+          exit 1
-+        fi
-+      done])dnl
-+      m4_if(m4_sysval, [0], [],
-+        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
-+  ])
-+  m4_popdef([gl_LIBSOURCES_DIR])
-+  m4_popdef([gl_LIBSOURCES_LIST])
-+  m4_popdef([AC_LIBSOURCES])
-+  m4_popdef([AC_REPLACE_FUNCS])
-+  m4_popdef([AC_LIBOBJ])
-+  AC_CONFIG_COMMANDS_PRE([
-+    gl_libobjs=
-+    gl_ltlibobjs=
-+    if test -n "$gl_LIBOBJS"; then
-+      # Remove the extension.
-+      sed_drop_objext='s/\.o$//;s/\.obj$//'
-+      for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
-+        gl_libobjs="$gl_libobjs $i.$ac_objext"
-+        gl_ltlibobjs="$gl_ltlibobjs $i.lo"
-+      done
-+    fi
-+    AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
-+    AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
-+  ])
-+  gltests_libdeps=
-+  gltests_ltlibdeps=
-+  m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ]))
-+  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS]))
-+  m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES]))
-+  m4_pushdef([gltests_LIBSOURCES_LIST], [])
-+  m4_pushdef([gltests_LIBSOURCES_DIR], [])
-+  gl_COMMON
-+  gl_source_base='gnulib/tests'
-+  gt_TYPE_WCHAR_T
-+  gt_TYPE_WINT_T
-+  AC_CHECK_FUNCS([shutdown])
-+  abs_aux_dir=`cd "$ac_aux_dir"; pwd`
-+  AC_SUBST([abs_aux_dir])
-+  m4_ifval(gltests_LIBSOURCES_LIST, [
-+    m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ ||
-+      for gl_file in ]gltests_LIBSOURCES_LIST[ ; do
-+        if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then
-+          echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2
-+          exit 1
-+        fi
-+      done])dnl
-+      m4_if(m4_sysval, [0], [],
-+        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
-+  ])
-+  m4_popdef([gltests_LIBSOURCES_DIR])
-+  m4_popdef([gltests_LIBSOURCES_LIST])
-+  m4_popdef([AC_LIBSOURCES])
-+  m4_popdef([AC_REPLACE_FUNCS])
-+  m4_popdef([AC_LIBOBJ])
-+  AC_CONFIG_COMMANDS_PRE([
-+    gltests_libobjs=
-+    gltests_ltlibobjs=
-+    if test -n "$gltests_LIBOBJS"; then
-+      # Remove the extension.
-+      sed_drop_objext='s/\.o$//;s/\.obj$//'
-+      for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
-+        gltests_libobjs="$gltests_libobjs $i.$ac_objext"
-+        gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
-+      done
-+    fi
-+    AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs])
-+    AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs])
-+  ])
-+  LIBTESTS_LIBDEPS="$gltests_libdeps"
-+  AC_SUBST([LIBTESTS_LIBDEPS])
-+])
-+
-+# Like AC_LIBOBJ, except that the module name goes
-+# into gl_LIBOBJS instead of into LIBOBJS.
-+AC_DEFUN([gl_LIBOBJ], [
-+  AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl
-+  gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext"
-+])
-+
-+# Like AC_REPLACE_FUNCS, except that the module name goes
-+# into gl_LIBOBJS instead of into LIBOBJS.
-+AC_DEFUN([gl_REPLACE_FUNCS], [
-+  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
-+  AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)])
-+])
-+
-+# Like AC_LIBSOURCES, except the directory where the source file is
-+# expected is derived from the gnulib-tool parameterization,
-+# and alloca is special cased (for the alloca-opt module).
-+# We could also entirely rely on EXTRA_lib..._SOURCES.
-+AC_DEFUN([gl_LIBSOURCES], [
-+  m4_foreach([_gl_NAME], [$1], [
-+    m4_if(_gl_NAME, [alloca.c], [], [
-+      m4_define([gl_LIBSOURCES_DIR], [gnulib/lib])
-+      m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ])
-+    ])
-+  ])
-+])
-+
-+# Like AC_LIBOBJ, except that the module name goes
-+# into gltests_LIBOBJS instead of into LIBOBJS.
-+AC_DEFUN([gltests_LIBOBJ], [
-+  AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl
-+  gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext"
-+])
-+
-+# Like AC_REPLACE_FUNCS, except that the module name goes
-+# into gltests_LIBOBJS instead of into LIBOBJS.
-+AC_DEFUN([gltests_REPLACE_FUNCS], [
-+  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
-+  AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)])
-+])
-+
-+# Like AC_LIBSOURCES, except the directory where the source file is
-+# expected is derived from the gnulib-tool parameterization,
-+# and alloca is special cased (for the alloca-opt module).
-+# We could also entirely rely on EXTRA_lib..._SOURCES.
-+AC_DEFUN([gltests_LIBSOURCES], [
-+  m4_foreach([_gl_NAME], [$1], [
-+    m4_if(_gl_NAME, [alloca.c], [], [
-+      m4_define([gltests_LIBSOURCES_DIR], [gnulib/tests])
-+      m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ])
-+    ])
++   for ac_kw in __restrict __restrict__ _Restrict restrict; do
++     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
++      [[typedef int * int_ptr;
++      int foo (int_ptr $ac_kw ip) {
++      return ip[0];
++       }]],
++      [[int s[1];
++      int * $ac_kw t = s;
++      t[0] = 0;
++      return foo(t)]])],
++      [ac_cv_c_restrict=$ac_kw])
++     test "$ac_cv_c_restrict" != no && break
++   done
 +  ])
++ AH_VERBATIM([restrict],
++[/* Define to the equivalent of the C99 'restrict' keyword, or to
++   nothing if this is not supported.  Do not define if restrict is
++   supported directly.  */
++#undef restrict
++/* Work around a bug in Sun C++: it does not support _Restrict, even
++   though the corresponding Sun C compiler does, which causes
++   "#define restrict _Restrict" in the previous line.  Perhaps some future
++   version of Sun C++ will work with _Restrict; if so, it'll probably
++   define __RESTRICT, just as Sun C does.  */
++#if defined __SUNPRO_CC && !defined __RESTRICT
++# define _Restrict
++#endif])
++ case $ac_cv_c_restrict in
++   restrict) ;;
++   no) AC_DEFINE([restrict], []) ;;
++   *)  AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
++ esac
 +])
-+
-+# This macro records the list of files which have been installed by
-+# gnulib-tool and may be removed by future gnulib-tool invocations.
-+AC_DEFUN([gl_FILE_LIST], [
-+  build-aux/link-warning.h
-+  build-aux/vc-list-files
-+  lib/alloca.in.h
-+  lib/arpa_inet.in.h
-+  lib/asnprintf.c
-+  lib/dummy.c
-+  lib/errno.in.h
-+  lib/float+.h
-+  lib/float.in.h
-+  lib/gai_strerror.c
-+  lib/getaddrinfo.c
-+  lib/getaddrinfo.h
-+  lib/gettext.h
-+  lib/inet_ntop.c
-+  lib/netinet_in.in.h
-+  lib/printf-args.c
-+  lib/printf-args.h
-+  lib/printf-parse.c
-+  lib/printf-parse.h
-+  lib/size_max.h
-+  lib/snprintf.c
-+  lib/stdbool.in.h
-+  lib/stdint.in.h
-+  lib/stdio-write.c
-+  lib/stdio.in.h
-+  lib/sys_socket.in.h
-+  lib/vasnprintf.c
-+  lib/vasnprintf.h
-+  lib/wchar.in.h
-+  lib/winsock.c
-+  lib/xsize.h
-+  m4/alloca.m4
-+  m4/arpa_inet_h.m4
-+  m4/errno_h.m4
-+  m4/extensions.m4
-+  m4/float_h.m4
-+  m4/getaddrinfo.m4
-+  m4/gnulib-common.m4
-+  m4/include_next.m4
-+  m4/inet_ntop.m4
-+  m4/intmax_t.m4
-+  m4/inttypes_h.m4
-+  m4/longlong.m4
-+  m4/netinet_in_h.m4
-+  m4/onceonly.m4
-+  m4/printf.m4
-+  m4/size_max.m4
-+  m4/snprintf.m4
-+  m4/socklen.m4
-+  m4/sockpfaf.m4
-+  m4/stdbool.m4
-+  m4/stdint.m4
-+  m4/stdint_h.m4
-+  m4/stdio_h.m4
-+  m4/sys_socket_h.m4
-+  m4/vasnprintf.m4
-+  m4/wchar.m4
-+  m4/wchar_t.m4
-+  m4/wint_t.m4
-+  m4/xsize.m4
-+  tests/test-alloca-opt.c
-+  tests/test-arpa_inet.c
-+  tests/test-errno.c
-+  tests/test-getaddrinfo.c
-+  tests/test-netinet_in.c
-+  tests/test-snprintf.c
-+  tests/test-stdbool.c
-+  tests/test-stdint.c
-+  tests/test-stdio.c
-+  tests/test-sys_socket.c
-+  tests/test-vasnprintf.c
-+  tests/test-vc-list-files-cvs.sh
-+  tests/test-vc-list-files-git.sh
-+  tests/test-wchar.c
-+  tests=lib/dummy.c
-+  tests=lib/intprops.h
-+  tests=lib/verify.h
-+])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-comp.m4~ gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-comp.m4~
---- gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-comp.m4~      1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-comp.m4~     2008-10-09 12:24:40.000000000 +0100
-@@ -0,0 +1,280 @@
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/gnulib-comp.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-comp.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/gnulib-comp.m4        1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-comp.m4      2008-10-09 15:24:54.000000000 +0100
+@@ -0,0 +1,314 @@
 +# DO NOT EDIT! GENERATED AUTOMATICALLY!
 +# Copyright (C) 2002-2008 Free Software Foundation, Inc.
 +#
@@ -12240,6 +12249,11 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-comp.m4~ gtk-vnc-0.3.7.gnulib/gnu
 +  gl_FUNC_ALLOCA
 +  gl_HEADER_ARPA_INET
 +  AC_PROG_MKDIR_P
++  AC_REQUIRE([gl_HEADER_SYS_SOCKET])
++  if test "$ac_cv_header_winsock2_h" = yes; then
++    AC_LIBOBJ([winsock])
++  fi
++  gl_SYS_SOCKET_MODULE_INDICATOR([connect])
 +  gl_HEADER_ERRNO_H
 +  gl_FLOAT_H
 +  gl_GETADDRINFO
@@ -12247,17 +12261,38 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-comp.m4~ gtk-vnc-0.3.7.gnulib/gnu
 +  AC_SUBST([LTLIBINTL])
 +  gl_INET_NTOP
 +  gl_ARPA_INET_MODULE_INDICATOR([inet_ntop])
++  AC_FUNC_MALLOC
++  AC_DEFINE([GNULIB_MALLOC_GNU], 1, [Define to indicate the 'malloc' module.])
++  gl_FUNC_MALLOC_POSIX
++  gl_STDLIB_MODULE_INDICATOR([malloc-posix])
 +  gl_HEADER_NETINET_IN
 +  AC_PROG_MKDIR_P
++  AC_REQUIRE([gl_HEADER_SYS_SOCKET])
++  if test "$ac_cv_header_winsock2_h" = yes; then
++    AC_LIBOBJ([winsock])
++  fi
++  gl_SYS_SOCKET_MODULE_INDICATOR([recv])
++  AC_REQUIRE([gl_HEADER_SYS_SOCKET])
++  if test "$ac_cv_header_winsock2_h" = yes; then
++    AC_LIBOBJ([winsock])
++  fi
++  gl_SYS_SOCKET_MODULE_INDICATOR([send])
 +  gl_SIZE_MAX
 +  gl_FUNC_SNPRINTF
 +  gl_STDIO_MODULE_INDICATOR([snprintf])
++  AC_REQUIRE([gl_HEADER_SYS_SOCKET])
++  if test "$ac_cv_header_winsock2_h" = yes; then
++    AC_LIBOBJ([winsock])
++  fi
++  gl_SYS_SOCKET_MODULE_INDICATOR([socket])
 +  gl_TYPE_SOCKLEN_T
 +  AM_STDBOOL_H
 +  gl_STDINT_H
 +  gl_STDIO_H
++  gl_STDLIB_H
 +  gl_HEADER_SYS_SOCKET
 +  AC_PROG_MKDIR_P
++  gl_UNISTD_H
 +  gl_FUNC_VASNPRINTF
 +  gl_WCHAR_H
 +  gl_XSIZE
@@ -12410,6 +12445,7 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-comp.m4~ gtk-vnc-0.3.7.gnulib/gnu
 +  lib/getaddrinfo.h
 +  lib/gettext.h
 +  lib/inet_ntop.c
++  lib/malloc.c
 +  lib/netinet_in.in.h
 +  lib/printf-args.c
 +  lib/printf-args.h
@@ -12421,7 +12457,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-comp.m4~ gtk-vnc-0.3.7.gnulib/gnu
 +  lib/stdint.in.h
 +  lib/stdio-write.c
 +  lib/stdio.in.h
++  lib/stdlib.in.h
 +  lib/sys_socket.in.h
++  lib/unistd.in.h
 +  lib/vasnprintf.c
 +  lib/vasnprintf.h
 +  lib/wchar.in.h
@@ -12439,6 +12477,7 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-comp.m4~ gtk-vnc-0.3.7.gnulib/gnu
 +  m4/intmax_t.m4
 +  m4/inttypes_h.m4
 +  m4/longlong.m4
++  m4/malloc.m4
 +  m4/netinet_in_h.m4
 +  m4/onceonly.m4
 +  m4/printf.m4
@@ -12450,7 +12489,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-comp.m4~ gtk-vnc-0.3.7.gnulib/gnu
 +  m4/stdint.m4
 +  m4/stdint_h.m4
 +  m4/stdio_h.m4
++  m4/stdlib_h.m4
 +  m4/sys_socket_h.m4
++  m4/unistd_h.m4
 +  m4/vasnprintf.m4
 +  m4/wchar.m4
 +  m4/wchar_t.m4
@@ -12465,7 +12506,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-comp.m4~ gtk-vnc-0.3.7.gnulib/gnu
 +  tests/test-stdbool.c
 +  tests/test-stdint.c
 +  tests/test-stdio.c
++  tests/test-stdlib.c
 +  tests/test-sys_socket.c
++  tests/test-unistd.c
 +  tests/test-vasnprintf.c
 +  tests/test-vc-list-files-cvs.sh
 +  tests/test-vc-list-files-git.sh
@@ -12474,9 +12517,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-comp.m4~ gtk-vnc-0.3.7.gnulib/gnu
 +  tests=lib/intprops.h
 +  tests=lib/verify.h
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-tool.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-tool.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-tool.m4       1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-tool.m4      2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/gnulib-tool.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-tool.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/gnulib-tool.m4        1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/gnulib-tool.m4      2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,57 @@
 +# gnulib-tool.m4 serial 2
 +dnl Copyright (C) 2004-2005 Free Software Foundation, Inc.
@@ -12535,9 +12578,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/gnulib-tool.m4 gtk-vnc-0.3.7.gnulib/gnul
 +
 +dnl Usage: gl_VC_FILES([BOOLEAN])
 +AC_DEFUN([gl_VC_FILES], [])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/include_next.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/include_next.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/include_next.m4      1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/include_next.m4     2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/include_next.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/include_next.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/include_next.m4       1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/include_next.m4     2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,128 @@
 +# include_next.m4 serial 8
 +dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
@@ -12667,9 +12710,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/include_next.m4 gtk-vnc-0.3.7.gnulib/gnu
 +       [AS_VAR_GET([gl_next_header])])
 +     AS_VAR_POPDEF([gl_next_header])])
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/inet_ntop.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/inet_ntop.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/inet_ntop.m4 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/inet_ntop.m4        2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/inet_ntop.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/inet_ntop.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/inet_ntop.m4  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/inet_ntop.m4        2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,26 @@
 +# inet_ntop.m4 serial 7
 +dnl Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc.
@@ -12697,9 +12740,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/inet_ntop.m4 gtk-vnc-0.3.7.gnulib/gnulib
 +  AC_REQUIRE([gl_SOCKET_FAMILIES])
 +  AC_REQUIRE([AC_C_RESTRICT])
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/intmax_t.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/intmax_t.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/intmax_t.m4  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/intmax_t.m4 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/intmax_t.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/intmax_t.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/intmax_t.m4   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/intmax_t.m4 2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,61 @@
 +# intmax_t.m4 serial 6
 +dnl Copyright (C) 1997-2004, 2006-2007 Free Software Foundation, Inc.
@@ -12762,9 +12805,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/intmax_t.m4 gtk-vnc-0.3.7.gnulib/gnulib/
 +     [Define to long or long long if <stdint.h> and <inttypes.h> don't define.])
 +  fi
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/inttypes_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/inttypes_h.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/inttypes_h.m4        1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/inttypes_h.m4       2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/inttypes_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/inttypes_h.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/inttypes_h.m4 1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/inttypes_h.m4       2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,26 @@
 +# inttypes_h.m4 serial 7
 +dnl Copyright (C) 1997-2004, 2006 Free Software Foundation, Inc.
@@ -12792,9 +12835,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/inttypes_h.m4 gtk-vnc-0.3.7.gnulib/gnuli
 +       and declares uintmax_t. ])
 +  fi
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/longlong.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/longlong.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/longlong.m4  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/longlong.m4 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/longlong.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/longlong.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/longlong.m4   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/longlong.m4 2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,106 @@
 +# longlong.m4 serial 13
 +dnl Copyright (C) 1999-2007 Free Software Foundation, Inc.
@@ -12902,9 +12945,54 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/longlong.m4 gtk-vnc-0.3.7.gnulib/gnulib/
 +            | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
 +            | (ullmax / ull) | (ullmax % ull));]])
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/netinet_in_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/netinet_in_h.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/netinet_in_h.m4      1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/netinet_in_h.m4     2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/malloc.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/malloc.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/malloc.m4     1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/malloc.m4   2008-10-09 15:24:52.000000000 +0100
+@@ -0,0 +1,41 @@
++# malloc.m4 serial 8
++dnl Copyright (C) 2007 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++# gl_FUNC_MALLOC_POSIX
++# --------------------
++# Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
++# fails), and replace malloc if it is not.
++AC_DEFUN([gl_FUNC_MALLOC_POSIX],
++[
++  AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
++  if test $gl_cv_func_malloc_posix = yes; then
++    HAVE_MALLOC_POSIX=1
++    AC_DEFINE([HAVE_MALLOC_POSIX], 1,
++      [Define if the 'malloc' function is POSIX compliant.])
++  else
++    AC_LIBOBJ([malloc])
++    HAVE_MALLOC_POSIX=0
++  fi
++  AC_SUBST([HAVE_MALLOC_POSIX])
++])
++
++# Test whether malloc, realloc, calloc are POSIX compliant,
++# Set gl_cv_func_malloc_posix to yes or no accordingly.
++AC_DEFUN([gl_CHECK_MALLOC_POSIX],
++[
++  AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant],
++    [gl_cv_func_malloc_posix],
++    [
++      dnl It is too dangerous to try to allocate a large amount of memory:
++      dnl some systems go to their knees when you do that. So assume that
++      dnl all Unix implementations of the function are POSIX compliant.
++      AC_TRY_COMPILE([],
++        [#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
++         choke me
++         #endif
++        ], [gl_cv_func_malloc_posix=yes], [gl_cv_func_malloc_posix=no])
++    ])
++])
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/netinet_in_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/netinet_in_h.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/netinet_in_h.m4       1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/netinet_in_h.m4     2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,30 @@
 +# netinet_in_h.m4 serial 4
 +dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
@@ -12936,9 +13024,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/netinet_in_h.m4 gtk-vnc-0.3.7.gnulib/gnu
 +  fi
 +  AC_SUBST([NETINET_IN_H])
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/onceonly.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/onceonly.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/onceonly.m4  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/onceonly.m4 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/onceonly.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/onceonly.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/onceonly.m4   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/onceonly.m4 2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,90 @@
 +# onceonly.m4 serial 6
 +dnl Copyright (C) 2002-2003, 2005-2006, 2008 Free Software Foundation, Inc.
@@ -13030,9 +13118,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/onceonly.m4 gtk-vnc-0.3.7.gnulib/gnulib/
 +    AC_REQUIRE([gl_CHECK_DECL_]m4_defn([gl_DECL_NAME]))
 +  ])
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/printf.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/printf.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/printf.m4    1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/printf.m4   2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/printf.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/printf.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/printf.m4     1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/printf.m4   2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,1309 @@
 +# printf.m4 serial 23
 +dnl Copyright (C) 2003, 2007-2008 Free Software Foundation, Inc.
@@ -14343,9 +14431,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/printf.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4
 +dnl   NetBSD 3.0                     .  .  .  .  #  #  .  #  #  ?  #  .  #  .  .  .  .  .  .
 +dnl   BeOS                           #  #  .  #  #  #  .  #  .  ?  .  #  ?  .  .  .  .  .  .
 +dnl   mingw                          #  #  #  #  #  #  .  #  #  .  #  #  ?  .  #  #  #  .  .
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/size_max.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/size_max.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/size_max.m4  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/size_max.m4 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/size_max.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/size_max.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/size_max.m4   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/size_max.m4 2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,68 @@
 +# size_max.m4 serial 6
 +dnl Copyright (C) 2003, 2005-2006 Free Software Foundation, Inc.
@@ -14415,9 +14503,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/size_max.m4 gtk-vnc-0.3.7.gnulib/gnulib/
 +m4_ifdef([AC_COMPUTE_INT], [], [
 +  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/snprintf.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/snprintf.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/snprintf.m4  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/snprintf.m4 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/snprintf.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/snprintf.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/snprintf.m4   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/snprintf.m4 2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,40 @@
 +# snprintf.m4 serial 5
 +dnl Copyright (C) 2002-2004, 2007-2008 Free Software Foundation, Inc.
@@ -14459,9 +14547,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/snprintf.m4 gtk-vnc-0.3.7.gnulib/gnulib/
 +
 +# Prerequisites of lib/snprintf.c.
 +AC_DEFUN([gl_PREREQ_SNPRINTF], [:])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/socklen.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/socklen.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/socklen.m4   1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/socklen.m4  2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/socklen.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/socklen.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/socklen.m4    1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/socklen.m4  2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,52 @@
 +# socklen.m4 serial 6
 +dnl Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
@@ -14515,9 +14603,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/socklen.m4 gtk-vnc-0.3.7.gnulib/gnulib/m
 +      #elif HAVE_WS2TCPIP_H
 +      # include <ws2tcpip.h>
 +      #endif])])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/sockpfaf.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/sockpfaf.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/sockpfaf.m4  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/sockpfaf.m4 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/sockpfaf.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/sockpfaf.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/sockpfaf.m4   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/sockpfaf.m4 2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,58 @@
 +# sockpfaf.m4 serial 5
 +dnl Copyright (C) 2004, 2006 Free Software Foundation, Inc.
@@ -14577,9 +14665,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/sockpfaf.m4 gtk-vnc-0.3.7.gnulib/gnulib/
 +    AC_DEFINE(HAVE_IPV6, 1, [Define to 1 if <sys/socket.h> defines AF_INET6.])
 +  fi
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/stdbool.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/stdbool.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/stdbool.m4   1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/stdbool.m4  2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/stdbool.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/stdbool.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/stdbool.m4    1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/stdbool.m4  2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,115 @@
 +# Check for stdbool.h that conforms to C99.
 +
@@ -14696,9 +14784,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/stdbool.m4 gtk-vnc-0.3.7.gnulib/gnulib/m
 +   if test $ac_cv_header_stdbool_h = yes; then
 +     AC_DEFINE(HAVE_STDBOOL_H, 1, [Define to 1 if stdbool.h conforms to C99.])
 +   fi])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/stdint_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/stdint_h.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/stdint_h.m4  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/stdint_h.m4 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/stdint_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/stdint_h.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/stdint_h.m4   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/stdint_h.m4 2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,26 @@
 +# stdint_h.m4 serial 6
 +dnl Copyright (C) 1997-2004, 2006 Free Software Foundation, Inc.
@@ -14726,9 +14814,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/stdint_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/
 +       and declares uintmax_t. ])
 +  fi
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/stdint.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/stdint.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/stdint.m4    1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/stdint.m4   2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/stdint.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/stdint.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/stdint.m4     1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/stdint.m4   2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,395 @@
 +# stdint.m4 serial 31
 +dnl Copyright (C) 2001-2008 Free Software Foundation, Inc.
@@ -15125,9 +15213,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/stdint.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4
 +# Local Variables:
 +# indent-tabs-mode: nil
 +# End:
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/stdio_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/stdio_h.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/stdio_h.m4   1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/stdio_h.m4  2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/stdio_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/stdio_h.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/stdio_h.m4    1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/stdio_h.m4  2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,125 @@
 +# stdio_h.m4 serial 13
 +dnl Copyright (C) 2007-2008 Free Software Foundation, Inc.
@@ -15254,9 +15342,60 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/stdio_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m
 +      [gl_cv_var_stdin_large_offset=yes],
 +      [gl_cv_var_stdin_large_offset=no])])
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/sys_socket_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/sys_socket_h.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/sys_socket_h.m4      1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/sys_socket_h.m4     2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/stdlib_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/stdlib_h.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/stdlib_h.m4   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/stdlib_h.m4 2008-10-09 15:24:53.000000000 +0100
+@@ -0,0 +1,47 @@
++# stdlib_h.m4 serial 7
++dnl Copyright (C) 2007, 2008 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++AC_DEFUN([gl_STDLIB_H],
++[
++  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
++  gl_CHECK_NEXT_HEADERS([stdlib.h])
++])
++
++AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
++[
++  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
++  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
++  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
++])
++
++AC_DEFUN([gl_STDLIB_H_DEFAULTS],
++[
++  GNULIB_MALLOC_POSIX=0;  AC_SUBST([GNULIB_MALLOC_POSIX])
++  GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
++  GNULIB_CALLOC_POSIX=0;  AC_SUBST([GNULIB_CALLOC_POSIX])
++  GNULIB_GETSUBOPT=0;     AC_SUBST([GNULIB_GETSUBOPT])
++  GNULIB_MKDTEMP=0;       AC_SUBST([GNULIB_MKDTEMP])
++  GNULIB_MKSTEMP=0;       AC_SUBST([GNULIB_MKSTEMP])
++  GNULIB_PUTENV=0;        AC_SUBST([GNULIB_PUTENV])
++  GNULIB_RPMATCH=0;       AC_SUBST([GNULIB_RPMATCH])
++  GNULIB_SETENV=0;        AC_SUBST([GNULIB_SETENV])
++  GNULIB_STRTOD=0;        AC_SUBST([GNULIB_STRTOD])
++  GNULIB_UNSETENV=0;      AC_SUBST([GNULIB_UNSETENV])
++  dnl Assume proper GNU behavior unless another module says otherwise.
++  HAVE_CALLOC_POSIX=1;    AC_SUBST([HAVE_CALLOC_POSIX])
++  HAVE_GETSUBOPT=1;       AC_SUBST([HAVE_GETSUBOPT])
++  HAVE_MALLOC_POSIX=1;    AC_SUBST([HAVE_MALLOC_POSIX])
++  HAVE_MKDTEMP=1;         AC_SUBST([HAVE_MKDTEMP])
++  HAVE_REALLOC_POSIX=1;   AC_SUBST([HAVE_REALLOC_POSIX])
++  HAVE_RPMATCH=1;         AC_SUBST([HAVE_RPMATCH])
++  HAVE_SETENV=1;          AC_SUBST([HAVE_SETENV])
++  HAVE_STRTOD=1;          AC_SUBST([HAVE_STRTOD])
++  HAVE_UNSETENV=1;        AC_SUBST([HAVE_UNSETENV])
++  REPLACE_MKSTEMP=0;      AC_SUBST([REPLACE_MKSTEMP])
++  REPLACE_PUTENV=0;       AC_SUBST([REPLACE_PUTENV])
++  REPLACE_STRTOD=0;       AC_SUBST([REPLACE_STRTOD])
++  VOID_UNSETENV=0;        AC_SUBST([VOID_UNSETENV])
++])
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/sys_socket_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/sys_socket_h.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/sys_socket_h.m4       1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/sys_socket_h.m4     2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,113 @@
 +# sys_socket_h.m4 serial 8
 +dnl Copyright (C) 2005-2008 Free Software Foundation, Inc.
@@ -15371,9 +15510,83 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/sys_socket_h.m4 gtk-vnc-0.3.7.gnulib/gnu
 +  GNULIB_SENDTO=0;      AC_SUBST([GNULIB_SENDTO])
 +  GNULIB_SETSOCKOPT=0;  AC_SUBST([GNULIB_SETSOCKOPT])
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/vasnprintf.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/vasnprintf.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/vasnprintf.m4        1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/vasnprintf.m4       2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/unistd_h.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/unistd_h.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/unistd_h.m4   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/unistd_h.m4 2008-10-09 15:24:53.000000000 +0100
+@@ -0,0 +1,70 @@
++# unistd_h.m4 serial 13
++dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl Written by Simon Josefsson, Bruno Haible.
++
++AC_DEFUN([gl_UNISTD_H],
++[
++  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
++  dnl once only, before all statements that occur in other macros.
++  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
++
++  gl_CHECK_NEXT_HEADERS([unistd.h])
++
++  AC_CHECK_HEADERS_ONCE([unistd.h])
++  if test $ac_cv_header_unistd_h = yes; then
++    HAVE_UNISTD_H=1
++  else
++    HAVE_UNISTD_H=0
++  fi
++  AC_SUBST([HAVE_UNISTD_H])
++])
++
++AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
++[
++  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
++  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
++  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
++])
++
++AC_DEFUN([gl_UNISTD_H_DEFAULTS],
++[
++  GNULIB_CHOWN=0;            AC_SUBST([GNULIB_CHOWN])
++  GNULIB_DUP2=0;             AC_SUBST([GNULIB_DUP2])
++  GNULIB_ENVIRON=0;          AC_SUBST([GNULIB_ENVIRON])
++  GNULIB_FCHDIR=0;           AC_SUBST([GNULIB_FCHDIR])
++  GNULIB_FSYNC=0;            AC_SUBST([GNULIB_FSYNC])
++  GNULIB_FTRUNCATE=0;        AC_SUBST([GNULIB_FTRUNCATE])
++  GNULIB_GETCWD=0;           AC_SUBST([GNULIB_GETCWD])
++  GNULIB_GETDTABLESIZE=0;    AC_SUBST([GNULIB_GETDTABLESIZE])
++  GNULIB_GETLOGIN_R=0;       AC_SUBST([GNULIB_GETLOGIN_R])
++  GNULIB_GETPAGESIZE=0;      AC_SUBST([GNULIB_GETPAGESIZE])
++  GNULIB_LCHOWN=0;           AC_SUBST([GNULIB_LCHOWN])
++  GNULIB_LSEEK=0;            AC_SUBST([GNULIB_LSEEK])
++  GNULIB_READLINK=0;         AC_SUBST([GNULIB_READLINK])
++  GNULIB_SLEEP=0;            AC_SUBST([GNULIB_SLEEP])
++  GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
++  GNULIB_WRITE=0;            AC_SUBST([GNULIB_WRITE])
++  dnl Assume proper GNU behavior unless another module says otherwise.
++  HAVE_DUP2=1;            AC_SUBST([HAVE_DUP2])
++  HAVE_FSYNC=1;           AC_SUBST([HAVE_FSYNC])
++  HAVE_FTRUNCATE=1;       AC_SUBST([HAVE_FTRUNCATE])
++  HAVE_GETDTABLESIZE=1;   AC_SUBST([HAVE_GETDTABLESIZE])
++  HAVE_GETPAGESIZE=1;     AC_SUBST([HAVE_GETPAGESIZE])
++  HAVE_READLINK=1;        AC_SUBST([HAVE_READLINK])
++  HAVE_SLEEP=1;           AC_SUBST([HAVE_SLEEP])
++  HAVE_DECL_ENVIRON=1;    AC_SUBST([HAVE_DECL_ENVIRON])
++  HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
++  HAVE_OS_H=0;            AC_SUBST([HAVE_OS_H])
++  HAVE_SYS_PARAM_H=0;     AC_SUBST([HAVE_SYS_PARAM_H])
++  REPLACE_CHOWN=0;        AC_SUBST([REPLACE_CHOWN])
++  REPLACE_FCHDIR=0;       AC_SUBST([REPLACE_FCHDIR])
++  REPLACE_GETCWD=0;       AC_SUBST([REPLACE_GETCWD])
++  REPLACE_GETPAGESIZE=0;  AC_SUBST([REPLACE_GETPAGESIZE])
++  REPLACE_LCHOWN=0;       AC_SUBST([REPLACE_LCHOWN])
++  REPLACE_LSEEK=0;        AC_SUBST([REPLACE_LSEEK])
++  REPLACE_WRITE=0;        AC_SUBST([REPLACE_WRITE])
++])
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/vasnprintf.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/vasnprintf.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/vasnprintf.m4 1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/vasnprintf.m4       2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,260 @@
 +# vasnprintf.m4 serial 25
 +dnl Copyright (C) 2002-2004, 2006-2008 Free Software Foundation, Inc.
@@ -15635,9 +15848,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/vasnprintf.m4 gtk-vnc-0.3.7.gnulib/gnuli
 +AC_DEFUN([gl_PREREQ_ASNPRINTF],
 +[
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/wchar.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/wchar.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/wchar.m4     1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/wchar.m4    2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/wchar.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/wchar.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/wchar.m4      1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/wchar.m4    2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,69 @@
 +dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
 +
@@ -15708,9 +15921,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/wchar.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/
 +  REPLACE_WCWIDTH=0;   AC_SUBST([REPLACE_WCWIDTH])
 +  WCHAR_H='';          AC_SUBST([WCHAR_H])
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/wchar_t.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/wchar_t.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/wchar_t.m4   1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/wchar_t.m4  2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/wchar_t.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/wchar_t.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/wchar_t.m4    1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/wchar_t.m4  2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,20 @@
 +# wchar_t.m4 serial 1 (gettext-0.12)
 +dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
@@ -15732,9 +15945,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/wchar_t.m4 gtk-vnc-0.3.7.gnulib/gnulib/m
 +    AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.])
 +  fi
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/wint_t.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/wint_t.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/wint_t.m4    1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/wint_t.m4   2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/wint_t.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/wint_t.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/wint_t.m4     1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/wint_t.m4   2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,28 @@
 +# wint_t.m4 serial 2 (gettext-0.17)
 +dnl Copyright (C) 2003, 2007 Free Software Foundation, Inc.
@@ -15764,9 +15977,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/wint_t.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4
 +    AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.])
 +  fi
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/xsize.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/xsize.m4
---- gtk-vnc-0.3.7.mingw/gnulib/m4/xsize.m4     1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/m4/xsize.m4    2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/m4/xsize.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/xsize.m4
+--- gtk-vnc-0.3.7.dan3/gnulib/m4/xsize.m4      1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/m4/xsize.m4    2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,13 @@
 +# xsize.m4 serial 3
 +dnl Copyright (C) 2003-2004 Free Software Foundation, Inc.
@@ -15781,9 +15994,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/m4/xsize.m4 gtk-vnc-0.3.7.gnulib/gnulib/m4/
 +  AC_REQUIRE([AC_C_INLINE])
 +  AC_CHECK_HEADERS(stdint.h)
 +])
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/dummy.c gtk-vnc-0.3.7.gnulib/gnulib/tests/dummy.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/dummy.c   1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/dummy.c  2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/dummy.c gtk-vnc-0.3.7.gnulib/gnulib/tests/dummy.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/dummy.c    1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/dummy.c  2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,42 @@
 +/* A dummy file, to prevent empty libraries from breaking builds.
 +   Copyright (C) 2004, 2007 Free Software Foundation, Inc.
@@ -15827,9 +16040,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/dummy.c gtk-vnc-0.3.7.gnulib/gnulib/t
 +   this file is never empty.  */
 +typedef int dummy;
 +#endif
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/intprops.h gtk-vnc-0.3.7.gnulib/gnulib/tests/intprops.h
---- gtk-vnc-0.3.7.mingw/gnulib/tests/intprops.h        1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/intprops.h       2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/intprops.h gtk-vnc-0.3.7.gnulib/gnulib/tests/intprops.h
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/intprops.h 1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/intprops.h       2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,77 @@
 +/* intprops.h -- properties of integer types
 +
@@ -15908,10 +16121,10 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/intprops.h gtk-vnc-0.3.7.gnulib/gnuli
 +/* Bound on buffer size needed to represent an integer type or expression T,
 +   including the terminating null.  */
 +#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/Makefile.am gtk-vnc-0.3.7.gnulib/gnulib/tests/Makefile.am
---- gtk-vnc-0.3.7.mingw/gnulib/tests/Makefile.am       1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/Makefile.am      2008-10-09 12:24:40.000000000 +0100
-@@ -0,0 +1,192 @@
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/Makefile.am gtk-vnc-0.3.7.gnulib/gnulib/tests/Makefile.am
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/Makefile.am        1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/Makefile.am      2008-10-09 15:24:54.000000000 +0100
+@@ -0,0 +1,210 @@
 +## DO NOT EDIT! GENERATED AUTOMATICALLY!
 +## Process this file with automake to produce Makefile.in.
 +# Copyright (C) 2002-2008 Free Software Foundation, Inc.
@@ -16045,6 +16258,15 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/Makefile.am gtk-vnc-0.3.7.gnulib/gnul
 +
 +## end   gnulib module stdio-tests
 +
++## begin gnulib module stdlib-tests
++
++TESTS += test-stdlib
++check_PROGRAMS += test-stdlib
++
++EXTRA_DIST += test-stdlib.c
++
++## end   gnulib module stdlib-tests
++
 +## begin gnulib module sys_socket-tests
 +
 +TESTS += test-sys_socket
@@ -16054,6 +16276,15 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/Makefile.am gtk-vnc-0.3.7.gnulib/gnul
 +
 +## end   gnulib module sys_socket-tests
 +
++## begin gnulib module unistd-tests
++
++TESTS += test-unistd
++check_PROGRAMS += test-unistd
++
++EXTRA_DIST += test-unistd.c
++
++## end   gnulib module unistd-tests
++
 +## begin gnulib module vasnprintf-tests
 +
 +TESTS += test-vasnprintf
@@ -16104,9 +16335,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/Makefile.am gtk-vnc-0.3.7.gnulib/gnul
 +        fi; \
 +      done; \
 +      :
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-alloca-opt.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-alloca-opt.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-alloca-opt.c 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-alloca-opt.c        2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-alloca-opt.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-alloca-opt.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-alloca-opt.c  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-alloca-opt.c        2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,62 @@
 +/* Test of optional automatic memory allocation.
 +   Copyright (C) 2005, 2007 Free Software Foundation, Inc.
@@ -16170,9 +16401,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-alloca-opt.c gtk-vnc-0.3.7.gnuli
 +
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-arpa_inet.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-arpa_inet.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-arpa_inet.c  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-arpa_inet.c 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-arpa_inet.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-arpa_inet.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-arpa_inet.c   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-arpa_inet.c 2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,27 @@
 +/* Test of <arpa/inet.h> substitute.
 +   Copyright (C) 2007 Free Software Foundation, Inc.
@@ -16201,9 +16432,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-arpa_inet.c gtk-vnc-0.3.7.gnulib
 +{
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-errno.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-errno.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-errno.c      1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-errno.c     2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-errno.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-errno.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-errno.c       1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-errno.c     2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,117 @@
 +/* Test of <errno.h> substitute.
 +   Copyright (C) 2008 Free Software Foundation, Inc.
@@ -16322,9 +16553,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-errno.c gtk-vnc-0.3.7.gnulib/gnu
 +
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-getaddrinfo.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-getaddrinfo.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-getaddrinfo.c        1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-getaddrinfo.c       2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-getaddrinfo.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-getaddrinfo.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-getaddrinfo.c 1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-getaddrinfo.c       2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,155 @@
 +/* Test the getaddrinfo module.
 +
@@ -16481,9 +16712,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-getaddrinfo.c gtk-vnc-0.3.7.gnul
 +    + simple (HOST3, SERV3)
 +    + simple (HOST4, SERV4);
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-netinet_in.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-netinet_in.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-netinet_in.c 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-netinet_in.c        2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-netinet_in.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-netinet_in.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-netinet_in.c  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-netinet_in.c        2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,27 @@
 +/* Test of <netinet/in.h> substitute.
 +   Copyright (C) 2007 Free Software Foundation, Inc.
@@ -16512,9 +16743,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-netinet_in.c gtk-vnc-0.3.7.gnuli
 +{
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-snprintf.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-snprintf.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-snprintf.c   1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-snprintf.c  2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-snprintf.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-snprintf.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-snprintf.c    1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-snprintf.c  2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,72 @@
 +/* Test of snprintf() function.
 +   Copyright (C) 2007-2008 Free Software Foundation, Inc.
@@ -16588,9 +16819,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-snprintf.c gtk-vnc-0.3.7.gnulib/
 +
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-stdbool.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdbool.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-stdbool.c    1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdbool.c   2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-stdbool.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdbool.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-stdbool.c     1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdbool.c   2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,95 @@
 +/* Test of <stdbool.h> substitute.
 +   Copyright (C) 2002-2007 Free Software Foundation, Inc.
@@ -16687,9 +16918,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-stdbool.c gtk-vnc-0.3.7.gnulib/g
 +{
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-stdint.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdint.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-stdint.c     1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdint.c    2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-stdint.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdint.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-stdint.c      1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdint.c    2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,360 @@
 +/* Test of <stdint.h> substitute.
 +   Copyright (C) 2006-2008 Free Software Foundation, Inc.
@@ -17051,9 +17282,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-stdint.c gtk-vnc-0.3.7.gnulib/gn
 +{
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-stdio.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdio.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-stdio.c      1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdio.c     2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-stdio.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdio.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-stdio.c       1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdio.c     2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,30 @@
 +/* Test of <stdio.h> substitute.
 +   Copyright (C) 2007 Free Software Foundation, Inc.
@@ -17085,9 +17316,50 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-stdio.c gtk-vnc-0.3.7.gnulib/gnu
 +{
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-sys_socket.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-sys_socket.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-sys_socket.c 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-sys_socket.c        2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-stdlib.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdlib.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-stdlib.c      1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-stdlib.c    2008-10-09 15:24:53.000000000 +0100
+@@ -0,0 +1,37 @@
++/* Test of <stdlib.h> substitute.
++   Copyright (C) 2007 Free Software Foundation, Inc.
++
++   This program is free software: you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 3 of the License, or
++   (at your option) any later version.
++
++   This program is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
++
++/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
++
++#include <config.h>
++
++#include <stdlib.h>
++
++int exitcode;
++
++int
++main ()
++{
++  /* Check that some macros are defined and different integer constants.  */
++  switch (exitcode)
++    {
++    case EXIT_SUCCESS:
++    case EXIT_FAILURE:
++      break;
++    }
++
++  return 0;
++}
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-sys_socket.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-sys_socket.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-sys_socket.c  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-sys_socket.c        2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,47 @@
 +/* Test of <sys/socket.h> substitute.
 +   Copyright (C) 2007 Free Software Foundation, Inc.
@@ -17136,9 +17408,57 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-sys_socket.c gtk-vnc-0.3.7.gnuli
 +
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-vasnprintf.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-vasnprintf.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-vasnprintf.c 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-vasnprintf.c        2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-unistd.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-unistd.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-unistd.c      1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-unistd.c    2008-10-09 15:24:53.000000000 +0100
+@@ -0,0 +1,44 @@
++/* Test of <unistd.h> substitute.
++   Copyright (C) 2007 Free Software Foundation, Inc.
++
++   This program is free software: you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 3 of the License, or
++   (at your option) any later version.
++
++   This program is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
++
++/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
++
++#include <config.h>
++
++#include <unistd.h>
++
++/* Check that the various SEEK_* macros are defined.  */
++int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET };
++
++/* Check that the types are all defined.  */
++size_t t1;
++ssize_t t2;
++#ifdef TODO /* Not implemented in gnulib yet */
++uid_t t3;
++gid_t t4;
++#endif
++off_t t5;
++pid_t t6;
++#ifdef TODO
++useconds_t t7;
++intptr_t t8;
++#endif
++
++int
++main ()
++{
++  return 0;
++}
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-vasnprintf.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-vasnprintf.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-vasnprintf.c  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-vasnprintf.c        2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,128 @@
 +/* Test of vasnprintf() and asnprintf() functions.
 +   Copyright (C) 2007-2008 Free Software Foundation, Inc.
@@ -17268,9 +17588,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-vasnprintf.c gtk-vnc-0.3.7.gnuli
 +  test_asnprintf ();
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-vc-list-files-cvs.sh gtk-vnc-0.3.7.gnulib/gnulib/tests/test-vc-list-files-cvs.sh
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-vc-list-files-cvs.sh 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-vc-list-files-cvs.sh        2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-vc-list-files-cvs.sh gtk-vnc-0.3.7.gnulib/gnulib/tests/test-vc-list-files-cvs.sh
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-vc-list-files-cvs.sh  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-vc-list-files-cvs.sh        2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,62 @@
 +#!/bin/sh
 +# Unit tests for vc-list-files
@@ -17334,9 +17654,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-vc-list-files-cvs.sh gtk-vnc-0.3
 +done
 +
 +(exit $fail); exit $fail
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-vc-list-files-git.sh gtk-vnc-0.3.7.gnulib/gnulib/tests/test-vc-list-files-git.sh
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-vc-list-files-git.sh 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-vc-list-files-git.sh        2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-vc-list-files-git.sh gtk-vnc-0.3.7.gnulib/gnulib/tests/test-vc-list-files-git.sh
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-vc-list-files-git.sh  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-vc-list-files-git.sh        2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,46 @@
 +#!/bin/sh
 +# Unit tests for vc-list-files
@@ -17384,9 +17704,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-vc-list-files-git.sh gtk-vnc-0.3
 +  fail=0
 +
 +(exit $fail); exit $fail
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-wchar.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-wchar.c
---- gtk-vnc-0.3.7.mingw/gnulib/tests/test-wchar.c      1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-wchar.c     2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/test-wchar.c gtk-vnc-0.3.7.gnulib/gnulib/tests/test-wchar.c
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/test-wchar.c       1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/test-wchar.c     2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,31 @@
 +/* Test of <wchar.h> substitute.
 +   Copyright (C) 2007-2008 Free Software Foundation, Inc.
@@ -17419,9 +17739,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/test-wchar.c gtk-vnc-0.3.7.gnulib/gnu
 +{
 +  return 0;
 +}
-diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/verify.h gtk-vnc-0.3.7.gnulib/gnulib/tests/verify.h
---- gtk-vnc-0.3.7.mingw/gnulib/tests/verify.h  1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/gnulib/tests/verify.h 2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/gnulib/tests/verify.h gtk-vnc-0.3.7.gnulib/gnulib/tests/verify.h
+--- gtk-vnc-0.3.7.dan3/gnulib/tests/verify.h   1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/gnulib/tests/verify.h 2008-10-09 15:24:53.000000000 +0100
 @@ -0,0 +1,140 @@
 +/* Compile-time assert-like macros.
 +
@@ -17563,9 +17883,9 @@ diff -urN gtk-vnc-0.3.7.mingw/gnulib/tests/verify.h gtk-vnc-0.3.7.gnulib/gnulib/
 +# define verify(R) extern int (* verify_function__ (void)) [verify_true (R)]
 +
 +#endif
-diff -urN gtk-vnc-0.3.7.mingw/link-warning.h gtk-vnc-0.3.7.gnulib/link-warning.h
---- gtk-vnc-0.3.7.mingw/link-warning.h 1970-01-01 01:00:00.000000000 +0100
-+++ gtk-vnc-0.3.7.gnulib/link-warning.h        2008-10-09 12:24:39.000000000 +0100
+diff -urN gtk-vnc-0.3.7.dan3/link-warning.h gtk-vnc-0.3.7.gnulib/link-warning.h
+--- gtk-vnc-0.3.7.dan3/link-warning.h  1970-01-01 01:00:00.000000000 +0100
++++ gtk-vnc-0.3.7.gnulib/link-warning.h        2008-10-09 15:24:52.000000000 +0100
 @@ -0,0 +1,28 @@
 +/* GL_LINK_WARNING("literal string") arranges to emit the literal string as
 +   a linker warning on most glibc systems.
index e8636d3..cf3d14d 100644 (file)
@@ -6,7 +6,7 @@
 
 Name:           mingw32-gtk-vnc
 Version:        0.3.7
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        MinGW Windows port of VNC client GTK widget
 
 License:        LGPLv2+
@@ -18,14 +18,11 @@ BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Patch1:         gtk-vnc-0.3.7-abs-ungrab.patch
 
 # Dan's MinGW patch version 2, fixed so it can apply to the tarball.
-Patch100:       gtk-vnc-0.3.7-mingw32-dan2.patch
+Patch100:       gtk-vnc-0.3.7-mingw32-dan3.patch
 
 # Extra files required by Gnulib.
 Patch101:       gtk-vnc-0.3.7-mingw32-gnulib-files.patch
 
-# Fix redefined symbols in socketcompat.h.
-Patch102:       gtk-vnc-0.3.7-mingw32-socketcompat.patch
-
 BuildArch:      noarch
 
 BuildRequires:  mingw32-filesystem >= 30
@@ -45,7 +42,6 @@ BuildRequires:  mingw32-binutils
 
 %patch100 -p1
 %patch101 -p1
-%patch102 -p1
 
 autoreconf
 
@@ -82,5 +78,5 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
-* Wed Sep 24 2008 Your Name <you@example.com> - 1.2.3-1
+* Thu Oct  9 2008 Richard W.M. Jones <rjones@redhat.com> - 0.3.7-2
 - Initial RPM release.