Change gnc_launch_assoc to use gnc_uri_get_scheme

Change the gnc_launch_assoc function to use the gnc_uri_get_scheme
instead of glib one and re-indent source file
This commit is contained in:
Robert Fewell 2019-03-29 17:31:54 +00:00
parent 4cb2910121
commit 167d209688

View File

@ -45,6 +45,7 @@
#include "dialog-commodity.h" #include "dialog-commodity.h"
#include "dialog-totd.h" #include "dialog-totd.h"
#include "gnc-ui-util.h" #include "gnc-ui-util.h"
#include "gnc-uri-utils.h"
#include "gnc-session.h" #include "gnc-session.h"
#include "qofbookslots.h" #include "qofbookslots.h"
#ifdef G_OS_WIN32 #ifdef G_OS_WIN32
@ -482,32 +483,33 @@ void
gnc_launch_assoc (const char *uri) gnc_launch_assoc (const char *uri)
{ {
wchar_t *winuri = NULL; wchar_t *winuri = NULL;
char* scheme = g_uri_parse_scheme(uri);
/* ShellExecuteW open doesn't decode http escapes if it's passed a /* ShellExecuteW open doesn't decode http escapes if it's passed a
* file URI so we have to do it. */ * file URI so we have to do it. */
if (scheme && strcmp (scheme, "file") == 0) if (gnc_uri_is_file_uri (uri))
{ {
gchar *filename = g_filename_from_uri (uri, NULL, NULL); gchar *uri_ue = g_uri_unescape_string (uri, NULL);
winuri = (wchar_t *)g_utf8_to_utf16(filename, -1, NULL, NULL, NULL); gchar *filename = gnc_uri_get_path (uri_ue);
winuri = (wchar_t *)g_utf8_to_utf16(filename, -1, NULL, NULL, NULL);
g_free (filename);
g_free (uri_ue);
} }
else else
winuri = (wchar_t *)g_utf8_to_utf16(uri, -1, NULL, NULL, NULL); winuri = (wchar_t *)g_utf8_to_utf16(uri, -1, NULL, NULL, NULL);
if (winuri) if (winuri)
{ {
wchar_t *wincmd = (wchar_t *)g_utf8_to_utf16("open", -1, wchar_t *wincmd = (wchar_t *)g_utf8_to_utf16("open", -1,
NULL, NULL, NULL); NULL, NULL, NULL);
if ((INT_PTR)ShellExecuteW(NULL, wincmd, winuri, if ((INT_PTR)ShellExecuteW(NULL, wincmd, winuri,
NULL, NULL, SW_SHOWNORMAL) <= 32) NULL, NULL, SW_SHOWNORMAL) <= 32)
{ {
const gchar *message = const gchar *message =
_("GnuCash could not find the associated file"); _("GnuCash could not find the associated file");
gnc_error_dialog(NULL, "%s: %s", message, uri); gnc_error_dialog(NULL, "%s: %s", message, uri);
} }
g_free (wincmd); g_free (wincmd);
g_free (winuri); g_free (winuri);
} }
g_free (scheme);
} }
#else #else