aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ephy-file-helpers.c
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@gnome.org>2003-10-31 21:10:43 +0800
committerMarco Pesenti Gritti <marco@src.gnome.org>2003-10-31 21:10:43 +0800
commit5909ee59ade218fcaab27cc4446e5ab384d90679 (patch)
tree3ac3bb55698b9a3da19318ffda8b5473ccaf2a47 /lib/ephy-file-helpers.c
parent8ae13251b8cd09e1d077ec1ae46b481769c955f2 (diff)
downloadgsoc2013-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.c176
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)
{