diff options
Diffstat (limited to 'source/xap/xfce/patches/exo_quoting_fix.diff')
-rw-r--r-- | source/xap/xfce/patches/exo_quoting_fix.diff | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/source/xap/xfce/patches/exo_quoting_fix.diff b/source/xap/xfce/patches/exo_quoting_fix.diff new file mode 100644 index 000000000..ac6544576 --- /dev/null +++ b/source/xap/xfce/patches/exo_quoting_fix.diff @@ -0,0 +1,66 @@ +Index: exo-open/main.c +=================================================================== +--- exo-open/main.c (revision 30250) ++++ exo-open/main.c (revision 30251) +@@ -36,7 +36,17 @@ + #include <exo/exo.h> + + ++/** ++ * For testing this code the following commands should work: ++ * ++ * exo-open --launch WebBrowser http://xfce.org (bug #5461). ++ * exo-open http://xfce.org ++ * exo-open --launch TerminalEmulator ./script.sh 'something with a space' 'nospace' (bug #5132). ++ * exo-open --launch TerminalEmulator ssh -l username some.host.com ++ **/ + ++ ++ + static gboolean opt_help = FALSE; + static gboolean opt_version = FALSE; + static gchar *opt_launch = NULL; +@@ -143,6 +153,8 @@ + { + if (argc > 1) + { ++ /* NOTE: see the comment at the top of this document! */ ++ + /* combine all specified parameters to one parameter string */ + join = g_string_new (NULL); + for (i = 1; argv[i] != NULL; i++) +@@ -150,11 +162,18 @@ + /* separate the arguments */ + if (i > 1) + join = g_string_append_c (join, ' '); +- +- /* append the quoted argument */ +- quoted = g_shell_quote (argv[i]); +- join = g_string_append (join, quoted); +- g_free (quoted); ++ ++ /* only quote arguments with spaces */ ++ if (strchr (argv[i], ' ') != NULL) ++ { ++ quoted = g_shell_quote (argv[i]); ++ join = g_string_append (join, quoted); ++ g_free (quoted); ++ } ++ else ++ { ++ join = g_string_append (join, argv[i]); ++ } + } + parameter = g_string_free (join, FALSE); + } +@@ -163,6 +182,10 @@ + parameter = NULL; + } + ++#ifndef NDEBUG ++ g_message ("launch=%s, wd=%s, parameters (%d)=%s", opt_launch, opt_working_directory, argc, parameter); ++#endif ++ + /* run the preferred application */ + if (!exo_execute_preferred_application (opt_launch, parameter, opt_working_directory, NULL, &err)) + { |