--- src/certtool-cfg.c~0	2014-09-12 18:31:50 +0300
+++ src/certtool-cfg.c	2014-12-08 12:07:41 +0200
@@ -1101,7 +1101,11 @@ void get_rand_int_value(unsigned char* s
 		snprintf(tmsg, sizeof(tmsg), "%s (default: %lu): ", msg, default_serial_int);
 		default_serial_int = read_int_with_default(tmsg, (long)default_serial_int);
 
+#if SIZEOF_LONG < 8
+		default_serial[0] = 0;
+#else
 		default_serial[0] = default_serial_int >> 32;
+#endif
 		default_serial[1] = default_serial_int;
 	}
 

--- src/pkcs11.c~0	2014-09-15 20:40:54 +0300
+++ src/pkcs11.c	2014-12-08 12:56:05 +0200
@@ -34,6 +34,28 @@
 #include <stdint.h>
 #include <common.h>
 
+/* Shamelessly stolen from gnulib.  */
+#if defined _WIN32 && !defined __CYGWIN__
+
+# define WIN32_LEAN_AND_MEAN  /* avoid including junk */
+# include <windows.h>
+
+unsigned int
+sleep (unsigned int seconds)
+{
+  unsigned int remaining;
+
+  /* Sleep for 1 second many times, because
+       1. Sleep is not interruptible by Ctrl-C,
+       2. we want to avoid arithmetic overflow while multiplying with 1000.  */
+  for (remaining = seconds; remaining > 0; remaining--)
+    Sleep (1000);
+
+  return remaining;
+}
+
+#endif
+
 static
 char *get_single_token_url(common_info_st * info);
 

--- src/socket.c~0	2014-11-07 22:47:15 +0200
+++ src/socket.c	2014-12-08 12:49:17 +0200
@@ -150,8 +150,23 @@ ssize_t wait_for_text(int fd, const char
 	char *p;
 	int ret;
 
+#if !defined _WIN32 || defined __CYGWIN__
 	alarm(10);
+#endif
 	do {
+#if defined _WIN32 && !defined __CYGWIN__
+		fd_set read_fds, write_fds;
+		struct timeval tv;
+
+		FD_ZERO(&read_fds);
+		FD_SET(fd, &read_fds);
+		tv.tv_sec = 10;
+		tv.tv_usec = 0;
+		ret = select(fd + 1, &read_fds, NULL, NULL, &tv);
+		if (ret <= 0)
+			ret = -1;
+		else
+#endif
 		ret = recv(fd, buf, sizeof(buf)-1, 0);
 		if (ret == -1) {
 			fprintf(stderr, "error receiving %s\n", txt);
@@ -167,7 +182,9 @@ ssize_t wait_for_text(int fd, const char
 		}
 	} while(ret < (int)txt_size || strncmp(buf, txt, txt_size) != 0);
 
+#if !defined _WIN32 || defined __CYGWIN__
 	alarm(0);
+#endif
 
 	return ret;
 }

--- gl/ftell.c~0	2014-07-29 22:22:47 +0300
+++ gl/ftell.c	2014-12-08 11:56:54 +0200
@@ -35,3 +35,6 @@ ftell (FILE *fp)
       return -1;
     }
 }
+
+#include "../src/gl/fseek.c"
+#include "../src/gl/fseeko.c"

--- guile/tests/openpgp-keyring.scm~0	2014-07-29 22:22:47 +0300
+++ guile/tests/openpgp-keyring.scm	2014-12-11 08:16:15 +0200
@@ -49,7 +49,7 @@
   ;; Return true if FILE contains a valid keyring encoded in FORMAT.
   (let ((raw-keyring (make-u8vector (file-size file))))
 
-    (uniform-vector-read! raw-keyring (open-input-file file))
+    (uniform-vector-read! raw-keyring (open-input-file file #:binary #t))
 
     (let ((keyring (import-openpgp-keyring raw-keyring format))
           (null-id (make-u8vector 8 0)))
