Don't use WinSock under cygwin
\begin{code}
withSocketsDo :: IO a -> IO a
-#ifndef _WIN32
+#if !defined(HAVE_WINSOCK_H) || defined(__CYGWIN32__)
withSocketsDo x = x
#else
withSocketsDo act = do
#ifndef GHC_SOCKETS_H
#define GHC_SOCKETS_H
-#ifdef HAVE_WINSOCK_H
+#if defined(HAVE_WINSOCK_H) && !defined(__CYGWIN__)
#include <winsock.h>
#else
StgInt writeDescriptor (StgInt, StgAddr, StgInt);
/* initWinSock.c */
-#ifdef _WIN32
+#if defined(HAVE_WINSOCK_H) && !defined(__CYGWIN__)
StgInt initWinSock();
void shutdownWinSock();
#endif
#include "stgio.h"
-#ifdef _WIN32
+#if defined(HAVE_WINSOCK_H) && !defined(__CYGWIN__)
+#define USE_WINSOCK
+#endif
-/* Initialising WinSock... */
+#ifdef USE_WINSOCK
+/* Initialising WinSock... */
StgInt
initWinSock ()
{