]> granicus.if.org Git - pgbouncer/commitdiff
win32: errno fixes
authorMarko Kreen <markokr@gmail.com>
Wed, 3 Dec 2008 11:34:28 +0000 (11:34 +0000)
committerMarko Kreen <markokr@gmail.com>
Wed, 3 Dec 2008 11:34:28 +0000 (11:34 +0000)
- switch errors around to correspond to what gets returned
- somewhat working strerror()

win32/compat_win32.h
win32/win32service.c

index d77ef39151640bda2b77c1a534684b8f24205fe5..87457e575145c6a1ae2e62e163595b59c5882512 100644 (file)
@@ -9,11 +9,11 @@
 #include <ws2tcpip.h>
 
 #define ECONNABORTED WSAECONNABORTED
-#define EINPROGRESS WSAEINPROGRESS
-#define EWOULDBLOCK WSAEWOULDBLOCK
+#define EMSGSIZE WSAEMSGSIZE
+#define EINPROGRESS WSAEWOULDBLOCK // WSAEINPROGRESS
+
 #undef EAGAIN
 #define EAGAIN WSAEWOULDBLOCK // WSAEAGAIN
-#define EMSGSIZE WSAEMSGSIZE
 
 /* dummy types / functions */
 #define uid_t int
@@ -120,8 +120,11 @@ static inline struct hostent *w_gethostbyname(const char *n) {
 }
 #define gethostbyname(a) w_gethostbyname(a)
 
+const char *wsa_strerror(int e);
+
 static inline const char *w_strerror(int e) {
-       /* wsa does not have its own strerror, maybe main one works */
+       if (e > 900)
+               return wsa_strerror(e);
        return strerror(e);
 }
 #define strerror(x) w_strerror(x)
index f14d0b2f8ebf9c48fa7642ee15f7cf64baa6090c..5364ff50c19d4f16d64a0ed7aebffe44c7993f29 100644 (file)
@@ -594,3 +594,22 @@ void syslog(int prio, const char *fmt, ...)
 void closelog(void)
 {
 }
+
+#define WCASE(x) case x: return #x
+const char *wsa_strerror(int e)
+{
+       static char wsa_buf[256];
+       switch (e) {
+       /* display few common ones by name */
+       WCASE(WSAEWOULDBLOCK);
+       WCASE(WSAEINPROGRESS);
+       WCASE(WSAECONNABORTED);
+       WCASE(WSAEINTR);
+       default:
+               snprintf(wsa_buf, sizeof(wsa_buf), "wsa_error: %d", e);
+               return wsa_buf;
+       }
+}
+#define strerror(x) w_strerror(x)
+
+