From e89c27826741334b35d8952c769f66d11eaedce8 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Sun, 18 Dec 2005 04:33:29 +0000 Subject: Use libedataserver's e_xml_parse_file() instead of xmlParseFile() 2005-12-17 Tor Lillqvist * e-config-upgrade.c: Use libedataserver's e_xml_parse_file() instead of xmlParseFile() directly. * e-shell.c * e-shell-importer.c: Use GLib API when applicable. * e-shell-importer.c * e-shell-window.c: Construct pathname of glade file at run-time. * e-shell-window-commands.c: Include e-util-private.h for Win32 redefinition of EVOLUTION_DATADIR. * main.c: No SIGSEGV handling on Win32. (main): Drop unused evolution_directory variable. svn path=/trunk/; revision=30849 --- shell/ChangeLog | 17 ++++++++ shell/e-config-upgrade.c | 14 +++--- shell/e-shell-importer.c | 33 ++++++++------ shell/e-shell-window-commands.c | 31 +++++++------ shell/e-shell-window.c | 5 ++- shell/e-shell.c | 96 ++++++++++++++++++++--------------------- shell/main.c | 28 ++++++------ 7 files changed, 128 insertions(+), 96 deletions(-) diff --git a/shell/ChangeLog b/shell/ChangeLog index bee390c3a1..c89628c529 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,20 @@ +2005-12-17 Tor Lillqvist + + * e-config-upgrade.c: Use libedataserver's e_xml_parse_file() + instead of xmlParseFile() directly. + + * e-shell.c + * e-shell-importer.c: Use GLib API when applicable. + + * e-shell-importer.c + * e-shell-window.c: Construct pathname of glade file at run-time. + + * e-shell-window-commands.c: Include e-util-private.h for Win32 + redefinition of EVOLUTION_DATADIR. + + * main.c: No SIGSEGV handling on Win32. + (main): Drop unused evolution_directory variable. + 2005-12-12 David Malcolm * e-shell-window.c (setup_widgets): escape the string when generating diff --git a/shell/e-config-upgrade.c b/shell/e-config-upgrade.c index 8fb6674a3a..d71f12ad09 100644 --- a/shell/e-config-upgrade.c +++ b/shell/e-config-upgrade.c @@ -22,17 +22,22 @@ * */ +#include + #include #include - #include #include #include + #include #include +#include + #include "e-util/e-bconf-map.h" + #include "e-config-upgrade.h" /* ********************************************************************** */ @@ -129,15 +134,12 @@ e_gconf_map_list_t remap_list[] = { int e_config_upgrade(int major, int minor, int revision) { - xmlDocPtr config_doc = NULL; + xmlDocPtr config_doc; char *conf_file; - struct stat st; int res = 0; - conf_file = g_build_filename (g_get_home_dir (), "evolution", "config.xmldb", NULL); - if (lstat (conf_file, &st) == 0 && S_ISREG (st.st_mode)) - config_doc = xmlParseFile (conf_file); + config_doc = e_xml_parse_file (conf_file); g_free (conf_file); if (config_doc && major <=1 && minor < 3) { diff --git a/shell/e-shell-importer.c b/shell/e-shell-importer.c index 39216cb5b9..f38a74e175 100644 --- a/shell/e-shell-importer.c +++ b/shell/e-shell-importer.c @@ -20,37 +20,39 @@ * Author: Iain Holmes */ -#ifdef HAVE_CONFIG_H #include -#endif #include #include #include - #include #include + #include + +#include + #include + #include #include #include #include +#include "misc/e-gui-utils.h" + +#include "e-util/e-dialog-utils.h" +#include "e-util/e-error.h" +#include "e-util/e-gtk-utils.h" +#include "e-util/e-icon-factory.h" +#include "e-util/e-import.h" +#include "e-util/e-util-private.h" + #include "e-shell.h" #include "e-shell-window.h" #include "e-shell-constants.h" -#include -#include - -#include -#include -#include -#include -#include - #include "e-shell-importer.h" typedef struct _ImportDialogFilePage { @@ -193,7 +195,7 @@ filename_changed (GtkEntry *entry, int i=0, firstitem=0; g_free(page->target->uri_src); - page->target->uri_src = g_strdup_printf("file://%s", filename); + page->target->uri_src = g_filename_to_uri(filename, NULL, NULL); l = e_import_get_importers(data->import, (EImportTarget *)page->target); item = page->items; @@ -667,6 +669,7 @@ e_shell_importer_start_import (EShellWindow *shell_window) GtkWidget *html; static gboolean dialog_open = FALSE; GdkPixbuf *icon; + char *gladefile; if (dialog_open) { return; @@ -680,7 +683,9 @@ e_shell_importer_start_import (EShellWindow *shell_window) data->window = shell_window; data->shell = e_shell_window_peek_shell (data->window); - data->wizard = glade_xml_new (EVOLUTION_GLADEDIR "/import.glade", NULL, NULL); + gladefile = g_build_filename (EVOLUTION_GLADEDIR, "import.glade", NULL); + data->wizard = glade_xml_new (gladefile, NULL, NULL); + g_free (gladefile); data->dialog = glade_xml_get_widget (data->wizard, "importwizard"); gtk_window_set_default_size (GTK_WINDOW (data->dialog), 480, 320); gtk_window_set_wmclass (GTK_WINDOW (data->dialog), "importdruid", diff --git a/shell/e-shell-window-commands.c b/shell/e-shell-window-commands.c index 51619a09aa..fc6b482b72 100644 --- a/shell/e-shell-window-commands.c +++ b/shell/e-shell-window-commands.c @@ -20,26 +20,16 @@ * Author: Ettore Perazzoli */ -#ifdef HAVE_CONFIG_H #include -#endif - -#include "e-shell-window-commands.h" - -#include "e-shell-importer.h" -#include "e-shell-window.h" - -#include "evolution-shell-component-utils.h" -#include "e-util/e-icon-factory.h" -#include "e-util/e-dialog-utils.h" -#include "e-util/e-error.h" +#include #include #include -#include #include +#include + #include #include @@ -51,7 +41,17 @@ #include #include -#include + +#include "e-util/e-icon-factory.h" +#include "e-util/e-dialog-utils.h" +#include "e-util/e-error.h" +#include "e-util/e-util-private.h" + +#include "e-shell-window-commands.h" +#include "e-shell-window.h" +#include "evolution-shell-component-utils.h" + +#include "e-shell-importer.h" /* Utility functions. */ @@ -577,6 +577,8 @@ command_about_box (BonoboUIComponent *uih, gtk_widget_show (about_box_window); } +#if 0 +/* Unused */ static void command_help_faq (BonoboUIComponent *uih, EShellWindow *window, @@ -586,6 +588,7 @@ command_help_faq (BonoboUIComponent *uih, /* FIXME use the error */ gnome_url_show ("http://gnome.org/projects/evolution/faq.shtml", NULL); } +#endif static void command_quick_reference (BonoboUIComponent *uih, diff --git a/shell/e-shell-window.c b/shell/e-shell-window.c index 9bfc225fa6..0fd5fe3dca 100644 --- a/shell/e-shell-window.c +++ b/shell/e-shell-window.c @@ -866,6 +866,7 @@ e_shell_window_new (EShell *shell, GConfClient *gconf_client = gconf_client_get_default (); BonoboUIContainer *ui_container; char *default_component_id = NULL; + char *xmlfile; if (bonobo_window_construct (BONOBO_WINDOW (window), bonobo_ui_container_new (), @@ -888,10 +889,12 @@ e_shell_window_new (EShell *shell, bonobo_object_corba_objref (BONOBO_OBJECT (ui_container)), NULL); + xmlfile = g_build_filename (EVOLUTION_UIDIR, "evolution.xml", NULL); bonobo_ui_util_set_ui (priv->ui_component, PREFIX, - EVOLUTION_UIDIR "/evolution.xml", + xmlfile, "evolution-" BASE_VERSION, NULL); + g_free (xmlfile); e_shell_window_commands_setup (window); e_menu_activate((EMenu *)priv->menu, priv->ui_component, TRUE); diff --git a/shell/e-shell.c b/shell/e-shell.c index 125cd3848e..99277b1cf6 100644 --- a/shell/e-shell.c +++ b/shell/e-shell.c @@ -20,57 +20,56 @@ * Author: Ettore Perazzoli */ -#ifdef HAVE_CONFIG_H #include -#endif +#include #include -#include - -#include "e-shell.h" - -#include "e-util/e-dialog-utils.h" -#include "e-util/e-bconf-map.h" -#include "e-util/e-fsutils.h" -#include "e-util/e-error.h" - -#include "e-shell-constants.h" -#include "e-shell-settings-dialog.h" - -#include "e-shell-marshal.h" -#include "es-event.h" - -#include "evolution-shell-component-utils.h" #include +#include #include #include -#include +#ifdef GDK_WINDOWING_X11 +#include +#include #include +#include +#elif defined (GDK_WINDOWING_WIN32) +/* gdkwin32.h includes which stomps over the namespace */ +#undef DATADIR +#define interface windows_interface +#include +#undef interface +#endif #include #include -/* (For the displayName stuff.) */ -#include -#include +#include #include #include #include +#include #include -#include - -#include - -#include +#include "e-util/e-bconf-map.h" +#include "e-util/e-dialog-utils.h" +#include "e-util/e-error.h" +#include "e-util/e-fsutils.h" +#include "e-util/e-util.h" #include "Evolution.h" +#include "e-shell-constants.h" +#include "e-shell-marshal.h" +#include "e-shell-settings-dialog.h" +#include "e-shell.h" +#include "es-event.h" #include "evolution-listener.h" +#include "evolution-shell-component-utils.h" static void set_line_status_complete(EvolutionListener *el, void *data); @@ -182,7 +181,13 @@ set_interactive (EShell *shell, CORBA_exception_init (&ev); +#ifdef GDK_WINDOWING_X11 GNOME_Evolution_Component_interactive (info->iface, interactive,GPOINTER_TO_INT (GDK_WINDOW_XWINDOW (view->window)), &ev); +#elif defined (GDK_WINDOWING_WIN32) + GNOME_Evolution_Component_interactive (info->iface, interactive,GPOINTER_TO_INT (GDK_WINDOW_HWND (view->window)), &ev); +#else +#error Port this to your windowing system +#endif /* Ignore errors, the components can decide to not implement this interface. */ @@ -544,23 +549,21 @@ detect_version (GConfClient *gconf, int *major, int *minor, int *revision) /* Since 1.4.0 We've been keeping the version key in gconf */ sscanf(val, "%u.%u.%u", major, minor, revision); g_free(val); - } else if (lstat (evolution_dir, &st) != 0 || !S_ISDIR (st.st_mode)) { + } else if (g_lstat (evolution_dir, &st) != 0 || !S_ISDIR (st.st_mode)) { /* If ~/evolution does not exit or is not a directory it must be a new installation */ *major = 0; *minor = 0; *revision = 0; } else { - xmlDocPtr config_doc = NULL; + xmlDocPtr config_doc; xmlNodePtr source; char *tmp; tmp = g_build_filename (evolution_dir, "config.xmldb", NULL); - if (lstat(tmp, &st) == 0 - && S_ISREG(st.st_mode)) - config_doc = xmlParseFile (tmp); + config_doc = e_xml_parse_file (tmp); g_free (tmp); - tmp = NULL; + if (config_doc && (source = e_bconf_get_path (config_doc, "/Shell")) && (tmp = e_bconf_get_value (source, "upgrade_from_1_0_to_1_2_performed")) @@ -573,8 +576,7 @@ detect_version (GConfClient *gconf, int *major, int *minor, int *revision) *minor = 0; *revision = 0; } - if (tmp) - xmlFree(tmp); + g_free (tmp); if (config_doc) xmlFreeDoc (config_doc); } @@ -739,23 +741,19 @@ e_shell_new (EShellStartupLineMode startup_line_mode, static int remove_dir(const char *root, const char *path) { - DIR *dir; - struct dirent *d; + GDir *dir; + const char *dname; int res = -1; char *new = NULL; struct stat st; - dir = opendir(path); + dir = g_dir_open(path, 0, NULL); if (dir == NULL) return -1; - while ( (d = readdir(dir)) ) { - if (!strcmp(d->d_name, ".") - || !strcmp(d->d_name, "..")) - continue; - - new = g_build_filename(path, d->d_name, NULL); - if (stat(new, &st) == -1) + while ( (dname = g_dir_read_name(dir)) ) { + new = g_build_filename(path, dname, NULL); + if (g_stat(new, &st) == -1) goto fail; /* make sure we're really removing something from evolution dir */ @@ -766,17 +764,17 @@ remove_dir(const char *root, const char *path) if (remove_dir(root, new) == -1) goto fail; } else { - if (unlink(new) == -1) + if (g_unlink(new) == -1) goto fail; } g_free(new); new = NULL; } - res = rmdir(path); + res = g_rmdir(path); fail: g_free(new); - closedir(dir); + g_dir_close(dir); return res; } @@ -852,7 +850,7 @@ check_old: g_free(last_version); if (lmajor == 1 && lminor < 5 - && stat(oldpath, &st) == 0 + && g_stat(oldpath, &st) == 0 && S_ISDIR(st.st_mode)) { int res; diff --git a/shell/main.c b/shell/main.c index 0117a626f5..5b3968237d 100644 --- a/shell/main.c +++ b/shell/main.c @@ -20,9 +20,10 @@ * Author: Ettore Perazzoli */ -#ifdef HAVE_CONFIG_H #include -#endif + +#include +#include #include "e-util/e-dialog-utils.h" #include "e-util/e-gtk-utils.h" @@ -36,6 +37,8 @@ #include "es-menu.h" #include "es-event.h" +#include "e-util/e-util-private.h" + #include #include #include @@ -52,9 +55,6 @@ #include #include -#include -#include - #include #include #include @@ -406,6 +406,7 @@ idle_cb (void *data) return FALSE; } +#ifndef G_OS_WIN32 /* SIGSEGV handling. @@ -458,6 +459,10 @@ setup_segv_redirect (void) g_static_mutex_lock (&segv_mutex); } +#else +#define setup_segv_redirect() 0 +#endif + int main (int argc, char **argv) { @@ -493,8 +498,8 @@ main (int argc, char **argv) GnomeProgram *program; poptContext popt_context; const char **args; - char *evolution_directory; GList *icon_list; + char *filename; /* Make ElectricFence work. */ free (malloc (10)); @@ -516,7 +521,10 @@ main (int argc, char **argv) } if (killev) { - execl (EVOLUTION_TOOLSDIR "/killev", "killev", NULL); + filename = g_build_filename (EVOLUTION_TOOLSDIR, + "killev", + NULL); + execl (filename, "killev", NULL); /* Not reached */ exit (0); } @@ -532,7 +540,7 @@ main (int argc, char **argv) if (evolution_debug_log) { int fd; - fd = open (evolution_debug_log, O_WRONLY | O_CREAT | O_TRUNC, 0600); + fd = g_open (evolution_debug_log, O_WRONLY | O_CREAT | O_TRUNC, 0600); if (fd) { dup2 (fd, STDOUT_FILENO); dup2 (fd, STDERR_FILENO); @@ -553,13 +561,9 @@ main (int argc, char **argv) g_list_free (icon_list); } - /* FIXME We shouldn't be using the old directory at all I think */ - evolution_directory = g_build_filename (g_get_home_dir (), "evolution", NULL); if (setup_only) exit (0); - g_free (evolution_directory); - uri_list = NULL; g_value_init (&popt_context_value, G_TYPE_POINTER); -- cgit v1.2.3