X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/e0173c373d91ee6dcbec5011f94a959f35fd5d56..de2fc9aa9e8db8e0258c8328161c6b5eda176a0a:/src/util.c?ds=sidebyside diff --git a/src/util.c b/src/util.c index 0cb98f49..079ccc9c 100644 --- a/src/util.c +++ b/src/util.c @@ -29,6 +29,21 @@ #include "dialog.h" +static gboolean spawn_command_line_async(const gchar * cmd, + const gchar * arg) +{ + gchar *cmdline = NULL; + gboolean status; + + cmdline = g_strdup_printf("%s '%s'", cmd, arg); + g_debug("Running: %s", cmdline); + + status = g_spawn_command_line_async(cmdline, NULL); + + g_free(cmdline); + +} + void open_url(GtkWindow *parent, const gchar * url) { #ifdef WINDOWS @@ -42,7 +57,6 @@ void open_url(GtkWindow *parent, const gchar * url) NULL }; gint i=0; - gchar *cmdline = NULL; const gchar *browser = g_getenv("BROWSER"); if (browser == NULL || browser[0] == '\0') { @@ -50,18 +64,26 @@ void open_url(GtkWindow *parent, const gchar * url) browser = browsers[i++]; } do { - cmdline = g_strdup_printf("%s '%s'", browser, url); - g_debug("Running: %s", cmdline); - - if (g_spawn_command_line_async(cmdline, NULL)) { - g_free(cmdline); + if (spawn_command_line_async(browser, url)) { return; } - g_free(cmdline); browser = browsers[i++]; } while(browser); a_dialog_error_msg ( parent, _("Could not launch web browser.") ); #endif /* WINDOWS */ } + +void new_email(GtkWindow *parent, const gchar * address) +{ + gchar *uri = g_strdup_printf("mailto:%s", address); +#ifdef WINDOWS + ShellExecute(NULL, NULL, (char *) uri, NULL, ".\\", 0); +#else /* WINDOWS */ + if (!spawn_command_line_async("xdg-email", uri)) + a_dialog_error_msg ( parent, _("Could not create new email.") ); +#endif /* WINDOWS */ + g_free(uri); + uri = NULL; +}