Author: nick Date: 2009-07-10 18:40:55 +0000 (Fri, 10 Jul 2009) New Revision: 30253
Modified: libexo/branches/xfce_4_6/NEWS libexo/branches/xfce_4_6/exo-open/main.c Log: Merge from trunk. Modified: libexo/branches/xfce_4_6/NEWS =================================================================== --- libexo/branches/xfce_4_6/NEWS 2009-07-10 18:38:05 UTC (rev 30252) +++ libexo/branches/xfce_4_6/NEWS 2009-07-10 18:40:55 UTC (rev 30253) @@ -1,6 +1,7 @@ 0.3.102 ======= - Allow all arguments in the terminal parameters (part of bug #5301). +- Fix some issues in exo-open with spaces in arguments. 0.3.101 ======= Modified: libexo/branches/xfce_4_6/exo-open/main.c =================================================================== --- libexo/branches/xfce_4_6/exo-open/main.c 2009-07-10 18:38:05 UTC (rev 30252) +++ libexo/branches/xfce_4_6/exo-open/main.c 2009-07-10 18:40:55 UTC (rev 30253) @@ -37,6 +37,19 @@ +/** + * 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 + * xfterm4 -e ssh -l ssh -l username some.host.com (bug #5301, this generates line below) + * 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 +156,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 +165,20 @@ /* 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 there are multiple + * arguments to be merged, this is a bit of magic to make + * common cares work property, see sample above with xfrun4 */ + if (argc > 2 && 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 +187,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)) { _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits