+static void
+g_set_error_from_last_error (GError **error)
+{
+ int code;
+
+#ifdef G_OS_WIN32
+ int err = WSAGetLastError ();
+#else
+ int err = h_errno;
+#endif
+
+ switch (err)
+ {
+ case HOST_NOT_FOUND:
+ code = G_IO_ERROR_RESOLVER_NOT_FOUND;
+ break;
+ case NO_DATA:
+ code = G_IO_ERROR_RESOLVER_NO_DATA;
+ break;
+ default:
+ g_warning ("unknown h_errno code encountered");
+ }
+
+#ifdef G_OS_WIN32
+ g_set_error (error, G_IO_ERROR, code, winsock_error_message (err));
+#else
+ g_set_error (error, G_IO_ERROR, code, hstrerror (err));
+#endif
+}
+