-/* Error macros need to be redirected to winsock error codes */
-#define ETIMEDOUT WSAETIMEDOUT
-#define ECONNREFUSED WSAECONNREFUSED
-#define EADDRINUSE WSAEADDRINUSE
-#define EINPROGRESS WSAEWOULDBLOCK
+/* this standard function is nonstarard. go figure. */
+#define popen _popen
+#define pclose _pclose
+
+/* Error macros need to be redirected to winsock error codes, apart from on VS2010 *SIGH* */
+#if _MSC_VER < 1600
+ #define ETIMEDOUT WSAETIMEDOUT
+ #define ECONNREFUSED WSAECONNREFUSED
+ #define EADDRINUSE WSAEADDRINUSE
+ #define EINPROGRESS WSAEWOULDBLOCK
+ #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
+#endif