windows.c: Add unicode support in subsurface_launch_for_uri()

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@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Lubomir I. Ivanov 2013-01-25 16:55:55 +02:00 committed by Dirk Hohndel
parent 7bb6108c34
commit ff5a8b0650

View file

@ -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;
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 FALSE;
return ret;
}
/* check if we are running a newer OS version */