[PATCH 3/3] windows.c: Add unicode support in subsurface_launch_for_uri()

Lubomir I. Ivanov neolit123 at gmail.com
Fri Jan 25 06:55:55 PST 2013


From: "Lubomir I. Ivanov" <neolit123 at gmail.com>

subsurface_launch_for_uri() requires unicode support, using
ShellExecuteW() and also the passed UTF-8 buffer has to be translated
to UTF-16 beforehand. Once the ShellExecuteW() is done we release
the UTF-16 allocation.

Signed-off-by: Lubomir I. Ivanov <neolit123 at gmail.com>
---

patch was a part of previous series. resent.

---
 windows.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/windows.c b/windows.c
index 2730d48..9adb21b 100644
--- a/windows.c
+++ b/windows.c
@@ -300,10 +300,16 @@ void subsurface_command_line_exit(gint *argc, gchar ***argv)
 
 gboolean subsurface_launch_for_uri(const char* uri)
 {
-	if ((INT_PTR)ShellExecute(NULL, "open", uri, NULL, NULL, SW_SHOWNORMAL) > 32)
-		return TRUE;
-	g_message("ShellExecute failed for: %s", uri);
-	return FALSE;
+	gboolean ret = FALSE;
+	wchar_t *wuri = (wchar_t *)g_utf8_to_utf16(uri, -1, NULL, NULL, NULL);
+	if (wuri) {
+		if ((INT_PTR)ShellExecuteW(NULL, L"open", wuri, NULL, NULL, SW_SHOWNORMAL) > 32)
+			ret = TRUE;
+		free(wuri);
+	}
+	if (!ret)
+		g_message("ShellExecute failed for: %s", uri);
+	return ret;
 }
 
 /* check if we are running a newer OS version */
-- 
1.7.11.msysgit.0



More information about the subsurface mailing list