diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/glib/gnome-console-support.patch')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/glib/gnome-console-support.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/glib/gnome-console-support.patch b/nixpkgs/pkgs/development/libraries/glib/gnome-console-support.patch new file mode 100644 index 000000000000..7f6894a5cec9 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/glib/gnome-console-support.patch @@ -0,0 +1,55 @@ +diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c +index 60d6debb2..a441bfec9 100644 +--- a/gio/gdesktopappinfo.c ++++ b/gio/gdesktopappinfo.c +@@ -2627,6 +2627,7 @@ prepend_terminal_to_vector (int *argc, + int i, j; + char **term_argv = NULL; + int term_argc = 0; ++ gboolean pass_cmd_as_single_arg = FALSE; + char *check; + char **the_argv; + +@@ -2672,6 +2673,11 @@ prepend_terminal_to_vector (int *argc, + } + else + { ++ if (check == NULL) { ++ check = g_find_program_in_path ("kgx"); ++ if (check != NULL) ++ pass_cmd_as_single_arg = TRUE; ++ } + if (check == NULL) + check = g_find_program_in_path ("tilix"); + if (check == NULL) +@@ -2697,14 +2703,27 @@ prepend_terminal_to_vector (int *argc, + } + } + +- real_argc = term_argc + *argc; ++ real_argc = term_argc + (pass_cmd_as_single_arg ? 1 : *argc); + real_argv = g_new (char *, real_argc + 1); + + for (i = 0; i < term_argc; i++) + real_argv[i] = term_argv[i]; + +- for (j = 0; j < *argc; j++, i++) +- real_argv[i] = (char *)the_argv[j]; ++ if (pass_cmd_as_single_arg) { ++ char **quoted_argv = g_new (char *, *argc + 1); ++ ++ for (j = 0; j < *argc; j++) { ++ quoted_argv[j] = g_shell_quote (the_argv[j]); ++ g_free (the_argv[j]); ++ } ++ quoted_argv[j] = NULL; ++ ++ real_argv[i++] = g_strjoinv (" ", quoted_argv); ++ g_strfreev (quoted_argv); ++ } else { ++ for (j = 0; j < *argc; j++, i++) ++ real_argv[i] = (char *)the_argv[j]; ++ } + + real_argv[i] = NULL; + |