Better error messages on Windows
authorJoseph C. Lehner <joseph.c.lehner@gmail.com>
Fri, 5 Feb 2016 18:20:23 +0000 (20:20 +0200)
committerJoseph C. Lehner <joseph.c.lehner@gmail.com>
Fri, 5 Feb 2016 18:20:23 +0000 (20:20 +0200)
ethsock.c

index c11f13d145a5709f41a9207df3be073182b6f4ce..3d5e60f69c493956afc2d633aa6d654aa1f6597c 100644 (file)
--- a/ethsock.c
+++ b/ethsock.c
@@ -87,9 +87,20 @@ static bool get_hwaddr(uint8_t *hwaddr, const char *intf)
 }
 #else
 
-static void win_perror2(const char *msg, int err)
+void win_perror2(const char *msg, DWORD err)
 {
-       fprintf(stderr, "%s: error %d\n", msg, err);
+       char *buf = NULL;
+       FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER |
+                       FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+                       NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+                       (LPTSTR)&buf, 0, NULL);
+
+       if (buf) {
+               fprintf(stderr, "%s: %s (%d)\n", msg, buf, (int)err);
+               LocalFree(buf);
+       } else {
+               fprintf(stderr, "%s: error %d\n", msg, (int)err);
+       }
 }
 
 static bool get_hwaddr(uint8_t *hwaddr, const char *intf)