Enable serprog on Windows

Sockets are not ported (yet).

Tested on Windows 7 with my Atmega32U2 serprog implementation.
http://paste.flashrom.org/view.php?id=1566

Corresponding to flashrom svn r1665.

Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Signed-off-by: Idwer Vollering <vidwer@gmail.com>
Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
diff --git a/Makefile b/Makefile
index 07fefc0..805290c 100644
--- a/Makefile
+++ b/Makefile
@@ -143,12 +143,6 @@
 # libusb-win32/libftdi stuff is usually installed in /usr/local.
 CPPFLAGS += -I/usr/local/include
 LDFLAGS += -L/usr/local/lib
-# Serprog is not supported under Windows/MinGW (missing sockets support).
-ifeq ($(CONFIG_SERPROG), yes)
-UNSUPPORTED_FEATURES += CONFIG_SERPROG=yes
-else
-override CONFIG_SERPROG = no
-endif
 # For now we disable all PCI-based programmers on Windows/MinGW (no libpci).
 ifeq ($(CONFIG_INTERNAL), yes)
 UNSUPPORTED_FEATURES += CONFIG_INTERNAL=yes
@@ -334,7 +328,7 @@
 # Always enable internal/onboard support for now.
 CONFIG_INTERNAL ?= yes
 
-# Always enable serprog for now. Needs to be disabled on Windows.
+# Always enable serprog for now.
 CONFIG_SERPROG ?= yes
 
 # RayeR SPIPGM hardware support
diff --git a/serprog.c b/serprog.c
index b68fc49..24f5726 100644
--- a/serprog.c
+++ b/serprog.c
@@ -20,21 +20,23 @@
  */
 
 #include <stdio.h>
+#ifndef _WIN32 /* stuff (presumably) needed for sockets only */
 #include <stdlib.h>
 #include <unistd.h>
-#include <strings.h>
-#include <string.h>
-#include <ctype.h>
 #include <fcntl.h>
 #include <sys/socket.h>
 #include <arpa/inet.h>
 #include <netinet/in.h>
 #include <netinet/tcp.h>
 #include <netdb.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <inttypes.h>
+#endif
+#ifdef _WIN32
+#include <conio.h>
+#else
 #include <termios.h>
+#endif
+#include <string.h>
+#include <errno.h>
 #include "flash.h"
 #include "programmer.h"
 #include "chipdrivers.h"
@@ -81,6 +83,7 @@
 	whether the command is supported before doing it */
 static int sp_check_avail_automatic = 0;
 
+#ifndef WIN32
 static int sp_opensocket(char *ip, unsigned int port)
 {
 	int flag = 1;
@@ -114,6 +117,7 @@
 	setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(int));
 	return sock;
 }
+#endif
 
 /* Synchronize: a bit tricky algorithm that tries to (and in my tests has *
  * always succeeded in) bring the serial protocol to known waiting-for-   *
@@ -351,6 +355,7 @@
 	}
 	free(device);
 
+#ifndef _WIN32
 	device = extract_programmer_param("ip");
 	if (have_device && device) {
 		msg_perr("Error: Both host and device specified.\n"
@@ -394,6 +399,7 @@
 			 "flashrom -p serprog:ip=ipaddr:port\n");
 		return 1;
 	}
+#endif
 
 	if (register_shutdown(serprog_shutdown, NULL))
 		return 1;