Updating branch refs/heads/master to d077cd1dfa46cb6d736bedf172f33d51e1fed334 (commit) from 860c500cf991c0d64f1538abf39c7579bad4a9ed (commit)
commit d077cd1dfa46cb6d736bedf172f33d51e1fed334 Author: Landry Breuil <lan...@xfce.org> Date: Thu Jan 3 22:22:27 2013 +0100 Fix broken argument handling (bug #8642) Use g_spawn_async() instead of building a commandline and passing it to g_spawn_command_line_async() which will in turn use g_shell_parse_argv().. Fix some corner cases with some special chars interpreted by the shell. Mostly from Guido Berhoerster, thanks! src/smartbookmark.c | 19 +++++++++++++------ 1 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/smartbookmark.c b/src/smartbookmark.c index b78d014..6f358d3 100644 --- a/src/smartbookmark.c +++ b/src/smartbookmark.c @@ -76,14 +76,21 @@ XFCE_PANEL_PLUGIN_REGISTER(smartbookmark_construct); static gboolean do_search(const char *url, const char *keyword) { DBG ("Do search"); - gchar *execute; + gchar *argv[] = { "exo-open", "--launch", "WebBrowser", NULL, NULL }; + GError *error = NULL; + gchar *complete_url; gboolean success; - execute = g_strconcat("exo-open --launch WebBrowser \"", url, NULL); - execute = g_strconcat(execute, keyword, NULL); - execute = g_strconcat(execute, "\"", NULL); + complete_url = g_strconcat(url, keyword, NULL); + argv[3] = complete_url; - success = g_spawn_command_line_async(execute, NULL); - g_free(execute); + success = g_spawn_async(NULL, (gchar **)argv, NULL, + G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, NULL, &error); + + if (!success) { + xfce_dialog_show_error(NULL, error, _("Failed to send %s to your preferred browser"), complete_url); + g_error_free(error); + } + g_free(complete_url); return success; } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits