diff options
author | Marco Pesenti Gritti <marco@gnome.org> | 2003-10-31 21:10:43 +0800 |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2003-10-31 21:10:43 +0800 |
commit | 5909ee59ade218fcaab27cc4446e5ab384d90679 (patch) | |
tree | 3ac3bb55698b9a3da19318ffda8b5473ccaf2a47 /lib/ephy-file-helpers.c | |
parent | 8ae13251b8cd09e1d077ec1ae46b481769c955f2 (diff) | |
download | gsoc2013-epiphany-5909ee59ade218fcaab27cc4446e5ab384d90679.tar gsoc2013-epiphany-5909ee59ade218fcaab27cc4446e5ab384d90679.tar.gz gsoc2013-epiphany-5909ee59ade218fcaab27cc4446e5ab384d90679.tar.bz2 gsoc2013-epiphany-5909ee59ade218fcaab27cc4446e5ab384d90679.tar.lz gsoc2013-epiphany-5909ee59ade218fcaab27cc4446e5ab384d90679.tar.xz gsoc2013-epiphany-5909ee59ade218fcaab27cc4446e5ab384d90679.tar.zst gsoc2013-epiphany-5909ee59ade218fcaab27cc4446e5ab384d90679.zip |
Use gnomevfs helper to open applications, drop our own.
2003-10-31 Marco Pesenti Gritti <marco@gnome.org>
* embed/mozilla/ContentHandler.cpp:
* lib/ephy-file-helpers.c:
* lib/ephy-file-helpers.h:
Use gnomevfs helper to open applications, drop our own.
Diffstat (limited to 'lib/ephy-file-helpers.c')
-rw-r--r-- | lib/ephy-file-helpers.c | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/lib/ephy-file-helpers.c b/lib/ephy-file-helpers.c index a14068ec9..d847ab523 100644 --- a/lib/ephy-file-helpers.c +++ b/lib/ephy-file-helpers.c @@ -137,182 +137,6 @@ ephy_file_helpers_shutdown (void) g_free (dot_dir); } -static void -gul_general_gnome_shell_execute (const char *command) -{ - GError *error = NULL; - if (!g_spawn_command_line_async (command, &error)) { - g_warning ("Error starting command '%s': %s\n", command, error->message); - g_error_free (error); - } -} - -/* Return a command string containing the path to a terminal on this system. */ - -static char * -try_terminal_command (const char *program, - const char *args) -{ - char *program_in_path, *quoted, *result; - - if (program == NULL) { - return NULL; - } - - program_in_path = g_find_program_in_path (program); - if (program_in_path == NULL) { - return NULL; - } - - quoted = g_shell_quote (program_in_path); - if (args == NULL || args[0] == '\0') { - return quoted; - } - result = g_strconcat (quoted, " ", args, NULL); - g_free (quoted); - return result; -} - -static char * -try_terminal_command_argv (int argc, - char **argv) -{ - GString *string; - int i; - char *quoted, *result; - - if (argc == 0) { - return NULL; - } - - if (argc == 1) { - return try_terminal_command (argv[0], NULL); - } - - string = g_string_new (argv[1]); - for (i = 2; i < argc; i++) { - quoted = g_shell_quote (argv[i]); - g_string_append_c (string, ' '); - g_string_append (string, quoted); - g_free (quoted); - } - result = try_terminal_command (argv[0], string->str); - g_string_free (string, TRUE); - - return result; -} - -static char * -get_terminal_command_prefix (gboolean for_command) -{ - int argc; - char **argv; - char *command; - guint i; - static const char *const commands[][3] = { - { "gnome-terminal", "-x", "" }, - { "dtterm", "-e", "-ls" }, - { "nxterm", "-e", "-ls" }, - { "color-xterm", "-e", "-ls" }, - { "rxvt", "-e", "-ls" }, - { "xterm", "-e", "-ls" }, - }; - - /* Try the terminal from preferences. Use without any - * arguments if we are just doing a standalone terminal. - */ - argc = 0; - argv = g_new0 (char *, 1); - gnome_prepend_terminal_to_vector (&argc, &argv); - - command = NULL; - if (argc != 0) { - if (for_command) { - command = try_terminal_command_argv (argc, argv); - } else { - /* Strip off the arguments in a lame attempt - * to make it be an interactive shell. - */ - command = try_terminal_command (argv[0], NULL); - } - } - - while (argc != 0) { - g_free (argv[--argc]); - } - g_free (argv); - - if (command != NULL) { - return command; - } - - /* Try well-known terminal applications in same order that gmc did. */ - for (i = 0; i < G_N_ELEMENTS (commands); i++) { - command = try_terminal_command (commands[i][0], - commands[i][for_command ? 1 : 2]); - if (command != NULL) { - break; - } - } - - return command; -} - -static char * -gul_general_gnome_make_terminal_command (const char *command) -{ - char *prefix, *quoted, *terminal_command; - - if (command == NULL) { - return get_terminal_command_prefix (FALSE); - } - prefix = get_terminal_command_prefix (TRUE); - quoted = g_shell_quote (command); - terminal_command = g_strconcat (prefix, " /bin/sh -c ", quoted, NULL); - g_free (prefix); - g_free (quoted); - return terminal_command; -} - -static void -gul_general_gnome_open_terminal (const char *command) -{ - char *command_line; - - command_line = gul_general_gnome_make_terminal_command (command); - if (command_line == NULL) { - g_message ("Could not start a terminal"); - return; - } - gul_general_gnome_shell_execute (command_line); - g_free (command_line); -} - -void -ephy_file_launch_application (const char *command_string, - const char *parameter, - gboolean use_terminal) -{ - char *full_command; - char *quoted_parameter; - - if (parameter != NULL) { - quoted_parameter = g_shell_quote (parameter); - full_command = g_strconcat (command_string, " ", quoted_parameter, NULL); - g_free (quoted_parameter); - } else { - full_command = g_strdup (command_string); - } - - if (use_terminal) { - gul_general_gnome_open_terminal (full_command); - } else { - gul_general_gnome_shell_execute (full_command); - } - - g_free (full_command); -} - void ephy_ensure_dir_exists (const char *dir) { |