aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--embed/mozilla/ContentHandler.cpp11
-rw-r--r--lib/ephy-file-helpers.c176
-rw-r--r--lib/ephy-file-helpers.h4
4 files changed, 14 insertions, 185 deletions
diff --git a/ChangeLog b/ChangeLog
index e716724a7..ba303787e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
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.
+
+2003-10-31 Marco Pesenti Gritti <marco@gnome.org>
+
* lib/egg/egg-editable-toolbar.c: (set_drag_cursor):
* lib/egg/egg-toolbar-editor.c: (set_drag_cursor):
diff --git a/embed/mozilla/ContentHandler.cpp b/embed/mozilla/ContentHandler.cpp
index f1fdec95c..f79aa43bd 100644
--- a/embed/mozilla/ContentHandler.cpp
+++ b/embed/mozilla/ContentHandler.cpp
@@ -391,13 +391,14 @@ NS_METHOD GContentHandler::LaunchHelperApp (void)
const nsCString &document = (mUrlHelper) ? mUrl : aFileName;
char *param = g_strdup (document.get());
- ephy_file_launch_application (mHelperApp->command,
- param,
- mHelperApp->requires_terminal);
-
- if(mUrlHelper) mLauncher->Cancel();
+ GList *params = NULL;
+ params = g_list_append (params, param);
+ gnome_vfs_mime_application_launch (mHelperApp, params);
g_free (param);
+ g_list_free (params);
+
+ if(mUrlHelper) mLauncher->Cancel();
}
else
{
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)
{
diff --git a/lib/ephy-file-helpers.h b/lib/ephy-file-helpers.h
index cd29f9ec4..6b2d17cfe 100644
--- a/lib/ephy-file-helpers.h
+++ b/lib/ephy-file-helpers.h
@@ -34,10 +34,6 @@ void ephy_file_helpers_init (void);
void ephy_file_helpers_shutdown (void);
-void ephy_file_launch_application (const char *command_string,
- const char *parameter,
- gboolean use_terminal);
-
char *ephy_file_tmp_filename (const char *base,
const char *extension);