Interpret EINTR as G_IO_ERROR_AGAIN.
[platform/upstream/glib.git] / gwin32.c
index 82f10d4..bd4ae65 100644 (file)
--- a/gwin32.c
+++ b/gwin32.c
@@ -793,3 +793,26 @@ g_win32_getlocale (void)
 
   return g_strdup (bfr);
 }
+
+gchar *
+g_win32_error_message (gint error)
+{
+  gchar *msg;
+  gchar *retval;
+  int nbytes;
+
+  nbytes = FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER
+                         |FORMAT_MESSAGE_IGNORE_INSERTS
+                         |FORMAT_MESSAGE_FROM_SYSTEM,
+                         NULL, error, 0,
+                         (LPTSTR) &msg, 0, NULL);
+  if (nbytes > 2 && msg[nbytes-1] == '\n' && msg[nbytes-2] == '\r')
+    msg[nbytes-2] = '\0';
+  
+  retval = g_strdup (msg);
+
+  if (msg != NULL)
+    LocalFree (msg);
+
+  return retval;
+}