multiudpsink: return error message on windows too.
authorMichael Smith <msmith@songbirdnest.com>
Tue, 24 Nov 2009 19:13:06 +0000 (11:13 -0800)
committerMichael Smith <msmith@songbirdnest.com>
Tue, 24 Nov 2009 19:13:06 +0000 (11:13 -0800)
gst/udp/gstmultiudpsink.c

index 9a5aaa6..27fb8b2 100644 (file)
@@ -402,8 +402,20 @@ socket_last_error_code ()
 static gchar *
 socket_last_error_message ()
 {
-  /* TODO: windows version using FormatMessage() */
+#ifdef G_OS_WIN32
+  int errorcode = WSAGetLastError ();
+  wchar_t buf[1024];
+  DWORD result =
+      FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+      NULL, errorcode, 0, buf, sizeof (buf) / sizeof (wchar_t), NULL);
+  if (FAILED (result)) {
+    return g_strdup ("failed to get error message from system");
+  } else {
+    return g_convert (buf, "UTF-16", "UTF-8", NULL, NULL, NULL);
+  }
+#else
   return g_strdup (g_strerror (errno));
+#endif
 }
 
 static GstFlowReturn