From e0d5ae3e97f318fb60674de189c8eff91477bac9 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 11 Mar 2008 15:20:59 +0000 Subject: ** Fixes bug #513951 2008-03-11 Matthew Barnes ** Fixes bug #513951 * addressbook/gui/component/addressbook-component.c (ensure_sources): * addressbook/gui/component/addressbook-migrate.c (addressbook_migrate): * calendar/gui/cal-search-bar.c (cal_search_bar_construct): * calendar/gui/migration.c (create_calendar_sources), (create_task_sources), (migrate_calendars), (migrate_tasks), (create_memo_sources): * calendar/gui/e-memos.c (e_memos_setup_view_menus): * calendar/gui/tasks-component.c (ensure_sources): * calendar/gui/gnome-cal.c (gnome_calendar_setup_view_menus): * calendar/gui/calendar-component.c (ensure_sources): * calendar/gui/memos-component.c (ensure_sources): * mail/mail-config.c (gconf_mime_types_changed): Adapt to new meaning of xxx_component_peek_base_directory(). * addressbook/gui/component/addressbook-component.c (addressbook_component_init): * addressbook/gui/component/addressbook-migrate.c (create_groups): * calendar/gui/tasks-component.c (tasks_component_init): * calendar/gui/calendar-component.c (calendar_component_init): * calendar/gui/memos-component.c (memos_component_init): * composer/e-msg-composer.c (autosave_manager_query_load_orphans), (autosave_init_file): * e-util/e-mktemp.c (get_dir): * e-util/e-util.c (get_lock_filename): * mail/mail-component.c: * plugins/face/face.c (org_gnome_composer_face): * smime/lib/e-cert-db.c (initialize_nss): Use e_get_user_data_dir() instead of constructing the full path. * calendar/gui/migration.c (add_gw_esource): * composer/e-msg-composer.c (e_msg-composer_unrealize), (e_msg_composer_set_view_from), (e_msg_composer_set_view_replyto), (e_msg_composer_set_view_to), (e_msg_composer_set_view_postto), (e_msg_composer_set_view_cc), (e_msg_composer_set_view_bcc): * e-util/e-util.c (e_file_update_save_path), (e_file_get_save_path): Emit warnings if saving to GConf fails. * e-util/e-util.c (e_get_user_data_dir): New function returns the base directory for Evolution user data. This should be the /only/ place in the application where this directory is hard-coded. svn path=/trunk/; revision=35175 --- addressbook/ChangeLog | 12 +++++ addressbook/gui/component/addressbook-component.c | 8 +-- addressbook/gui/component/addressbook-migrate.c | 8 +-- calendar/ChangeLog | 22 ++++++++ calendar/gui/cal-search-bar.c | 12 +++-- calendar/gui/calendar-component.c | 12 ++--- calendar/gui/e-memos.c | 2 +- calendar/gui/gnome-cal.c | 2 +- calendar/gui/memos-component.c | 12 ++--- calendar/gui/migration.c | 27 ++++++---- calendar/gui/tasks-component.c | 12 ++--- composer/ChangeLog | 14 +++++ composer/e-msg-composer.c | 62 +++++++++++++++++------ e-util/ChangeLog | 16 ++++++ e-util/e-mktemp.c | 2 +- e-util/e-util.c | 36 +++++++++++-- e-util/e-util.h | 2 + mail/ChangeLog | 10 ++++ mail/mail-component.c | 21 +++----- mail/mail-config.c | 6 ++- plugins/face/ChangeLog | 7 +++ plugins/face/face.c | 3 +- smime/ChangeLog | 7 +++ smime/lib/e-cert-db.c | 14 ++--- 24 files changed, 240 insertions(+), 89 deletions(-) diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index b1b44c4ae7..12e10b7471 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,3 +1,15 @@ +2008-03-11 Matthew Barnes + + ** Fixes part of bug #513951 + + * gui/component/addressbook-component.c (ensure_sources): + * gui/component/addressbook-migrate.c (addressbook_migrate): + Adapt to new meaning of xxx_component_peek_base_directory(). + + * gui/component/addressbook-component.c (addressbook_component_init): + * gui/component/addressbook-migrate.c (create_groups): + Use e_get_user_data_dir() instead of constructing the full path. + 2008-02-22 Milan Crha ** Part of fix for bug #514836 diff --git a/addressbook/gui/component/addressbook-component.c b/addressbook/gui/component/addressbook-component.c index 57de2505c4..8d02ac0d46 100644 --- a/addressbook/gui/component/addressbook-component.c +++ b/addressbook/gui/component/addressbook-component.c @@ -76,6 +76,7 @@ ensure_sources (AddressbookComponent *component) ESourceGroup *on_ldap_servers; ESource *personal_source; char *base_uri, *base_uri_proto; + const gchar *base_dir; on_this_computer = NULL; on_ldap_servers = NULL; @@ -86,9 +87,8 @@ ensure_sources (AddressbookComponent *component) return; } - base_uri = g_build_filename (addressbook_component_peek_base_directory (component), - "addressbook", "local", - NULL); + base_dir = addressbook_component_peek_base_directory (component); + base_uri = g_build_filename (base_dir, "local", NULL); base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL); @@ -486,7 +486,7 @@ addressbook_component_init (AddressbookComponent *component) /* EPFIXME: Should use a custom one instead? */ priv->gconf_client = gconf_client_get_default (); - priv->base_directory = g_build_filename (g_get_home_dir (), ".evolution", NULL); + priv->base_directory = g_build_filename (e_get_user_data_dir (), "addressbook", NULL); component->priv = priv; diff --git a/addressbook/gui/component/addressbook-migrate.c b/addressbook/gui/component/addressbook-migrate.c index f1169f7547..d7c94e695f 100644 --- a/addressbook/gui/component/addressbook-migrate.c +++ b/addressbook/gui/component/addressbook-migrate.c @@ -449,14 +449,14 @@ create_groups (MigrationContext *context, GSList *groups; ESourceGroup *group; char *base_uri, *base_uri_proto; + const gchar *base_dir; *on_this_computer = NULL; *on_ldap_servers = NULL; *personal_source = NULL; - base_uri = g_build_filename (addressbook_component_peek_base_directory (context->component), - "addressbook", "local", - NULL); + base_dir = addressbook_component_peek_base_directory (context->component); + base_uri = g_build_filename (base_dir, "local", NULL); base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL); @@ -1171,7 +1171,7 @@ addressbook_migrate (AddressbookComponent *component, int major, int minor, int old_path = g_build_filename (g_get_home_dir (), "evolution", "local", "Contacts", NULL); new_path = g_build_filename (addressbook_component_peek_base_directory (component), - "addressbook", "local", "system", NULL); + "local", "system", NULL); migrate_pilot_data (old_path, new_path); g_free (new_path); g_free (old_path); diff --git a/calendar/ChangeLog b/calendar/ChangeLog index c6f28fdebc..cf258abccc 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,25 @@ +2008-03-11 Matthew Barnes + + ** Fixes part of bug #513951 + + * gui/cal-search-bar.c (cal_search_bar_construct): + * gui/migration.c (create_calendar_sources), (create_task_sources), + (migrate_calendars), (migrate_tasks), (create_memo_sources): + * gui/e-memos.c (e_memos_setup_view_menus): + * gui/tasks-component.c (ensure_sources): + * gui/gnome-cal.c (gnome_calendar_setup_view_menus): + * gui/calendar-component.c (ensure_sources): + * gui/memos-component.c (ensure_sources): + Adapt to new meaning of xxx_component_peek_base_directory(). + + * gui/tasks-component.c (tasks_component_init): + * gui/calendar-component.c (calendar_component_init): + * gui/memos-component.c (memos_component_init): + Use e_get_user_data_dir() instead of constructing the full path. + + * gui/migration.c (add_gw_esource): + Emit warnings when saving to GConf fails. + 2008-02-25 Chenthill Palanisamy Fixes #516498 diff --git a/calendar/gui/cal-search-bar.c b/calendar/gui/cal-search-bar.c index fdaa0ff791..58ba068355 100644 --- a/calendar/gui/cal-search-bar.c +++ b/calendar/gui/cal-search-bar.c @@ -37,6 +37,9 @@ #include #include "cal-search-bar.h" +#include "calendar-component.h" +#include "memos-component.h" +#include "tasks-component.h" #include "e-util/e-util.h" #include "e-util/e-error.h" @@ -736,6 +739,7 @@ cal_search_bar_construct (CalSearchBar *cal_search, guint32 flags) FilterPart *part; RuleContext *search_context; FilterRule *search_rule; + const gchar *base_dir; g_return_val_if_fail (IS_CAL_SEARCH_BAR (cal_search), NULL); @@ -760,16 +764,18 @@ cal_search_bar_construct (CalSearchBar *cal_search, guint32 flags) rule_context_add_rule, rule_context_next_rule); if (flags == CAL_SEARCH_MEMOS_DEFAULT) { - userfile = g_build_filename (g_get_home_dir (), ".evolution", "memos", "searches.xml", NULL); + base_dir = memos_component_peek_base_directory (memos_component_peek ()); xmlfile = g_build_filename (SEARCH_RULE_DIR, "memotypes.xml", NULL); } else if (flags == CAL_SEARCH_TASKS_DEFAULT) { - userfile = g_build_filename (g_get_home_dir (), ".evolution", "tasks", "searches.xml", NULL); + base_dir = tasks_component_peek_base_directory (tasks_component_peek ()); xmlfile = g_build_filename (SEARCH_RULE_DIR, "tasktypes.xml", NULL); } else { - userfile = g_build_filename (g_get_home_dir (), ".evolution", "calendar", "searches.xml", NULL); + base_dir = calendar_component_peek_base_directory (calendar_component_peek ()); xmlfile = g_build_filename (SEARCH_RULE_DIR, "caltypes.xml", NULL); } + userfile = g_build_filename (base_dir, "searches.xml", NULL); + g_object_set_data_full (G_OBJECT (search_context), "user", userfile, g_free); g_object_set_data_full (G_OBJECT (search_context), "system", xmlfile, g_free); diff --git a/calendar/gui/calendar-component.c b/calendar/gui/calendar-component.c index 067fadd21d..9dffb61b43 100644 --- a/calendar/gui/calendar-component.c +++ b/calendar/gui/calendar-component.c @@ -161,6 +161,7 @@ ensure_sources (CalendarComponent *component) ESource *personal_source; ESource *birthdays_source; char *base_uri, *base_uri_proto; + const gchar *base_dir; gchar *create_source; on_this_computer = NULL; @@ -175,9 +176,8 @@ ensure_sources (CalendarComponent *component) return; } - base_uri = g_build_filename (calendar_component_peek_base_directory (component), - "calendar", "local", - NULL); + base_dir = calendar_component_peek_base_directory (component); + base_uri = g_build_filename (base_dir, "local", NULL); base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL); @@ -1726,10 +1726,8 @@ calendar_component_init (CalendarComponent *component) priv = g_new0 (CalendarComponentPrivate, 1); - priv->base_directory = g_build_filename (g_get_home_dir (), ".evolution", NULL); - priv->config_directory = g_build_filename (g_get_home_dir (), - ".evolution", "calendar", "config", - NULL); + priv->base_directory = g_build_filename (e_get_user_data_dir (), "calendar", NULL); + priv->config_directory = g_build_filename (priv->base_directory, "config", NULL); /* EPFIXME: Should use a custom one instead? Also we should add * calendar_component_peek_gconf_client(). */ diff --git a/calendar/gui/e-memos.c b/calendar/gui/e-memos.c index ab2a90f825..c62205fff5 100644 --- a/calendar/gui/e-memos.c +++ b/calendar/gui/e-memos.c @@ -1155,7 +1155,7 @@ e_memos_setup_view_menus (EMemos *memos, BonoboUIComponent *uic) "memos", NULL); dir1 = g_build_filename (memos_component_peek_base_directory (memos_component_peek ()), - "memos", "views", NULL); + "views", NULL); gal_view_collection_set_storage_directories (collection, dir0, dir1); diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c index e955b7be32..5108164c98 100644 --- a/calendar/gui/gnome-cal.c +++ b/calendar/gui/gnome-cal.c @@ -2386,7 +2386,7 @@ gnome_calendar_setup_view_menus (GnomeCalendar *gcal, BonoboUIComponent *uic) "calendar", NULL); path1 = g_build_filename (calendar_component_peek_base_directory (calendar_component_peek ()), - "calendar", "views", NULL); + "views", NULL); gal_view_collection_set_storage_directories (collection, path0, path1); diff --git a/calendar/gui/memos-component.c b/calendar/gui/memos-component.c index 2aa4d7313e..aed668e825 100644 --- a/calendar/gui/memos-component.c +++ b/calendar/gui/memos-component.c @@ -132,6 +132,7 @@ ensure_sources (MemosComponent *component) ESourceGroup *on_the_web; ESource *personal_source; char *base_uri, *base_uri_proto; + const gchar *base_dir; on_this_computer = NULL; on_the_web = NULL; @@ -142,9 +143,8 @@ ensure_sources (MemosComponent *component) return; } - base_uri = g_build_filename (memos_component_peek_base_directory (component), - "memos", "local", - NULL); + base_dir = memos_component_peek_base_directory (component); + base_uri = g_build_filename (base_dir, "local", NULL); base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL); @@ -1388,10 +1388,8 @@ memos_component_init (MemosComponent *component, MemosComponentClass *klass) priv = g_new0 (MemosComponentPrivate, 1); - priv->base_directory = g_build_filename (g_get_home_dir (), ".evolution", NULL); - priv->config_directory = g_build_filename (g_get_home_dir (), - ".evolution", "memos", "config", - NULL); + priv->base_directory = g_build_filename (e_get_user_data_dir (), "memos", NULL); + priv->config_directory = g_build_filename (priv->base_directory, "config", NULL); component->priv = priv; ensure_sources (component); diff --git a/calendar/gui/migration.c b/calendar/gui/migration.c index 5a798c8e74..5ac2547d9d 100644 --- a/calendar/gui/migration.c +++ b/calendar/gui/migration.c @@ -424,15 +424,15 @@ create_calendar_sources (CalendarComponent *component, GSList *groups; ESourceGroup *group; char *base_uri, *base_uri_proto; + const gchar *base_dir; *on_this_computer = NULL; *on_the_web = NULL; *contacts = NULL; *personal_source = NULL; - base_uri = g_build_filename (calendar_component_peek_base_directory (component), - "calendar", "local", - NULL); + base_dir = calendar_component_peek_base_directory (component); + base_uri = g_build_filename (base_dir, "local", NULL); base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL); @@ -535,13 +535,14 @@ create_task_sources (TasksComponent *component, GSList *groups; ESourceGroup *group; char *base_uri, *base_uri_proto; + const gchar *base_dir; *on_this_computer = NULL; *on_the_web = NULL; *personal_source = NULL; - base_uri = g_build_filename (tasks_component_peek_base_directory (component), - "tasks", "local", NULL); + base_dir = tasks_component_peek_base_directory (component); + base_uri = g_build_filename (base_dir, "local", NULL); base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL); @@ -851,7 +852,7 @@ migrate_calendars (CalendarComponent *component, int major, int minor, int revis old_path = g_build_filename (g_get_home_dir (), "evolution", "local", "Calendar", NULL); new_path = g_build_filename (calendar_component_peek_base_directory (component), - "calendar", "local", "system", NULL); + "local", "system", NULL); migrate_pilot_data ("calendar", "calendar", old_path, new_path); g_free (new_path); g_free (old_path); @@ -993,7 +994,7 @@ migrate_tasks (TasksComponent *component, int major, int minor, int revision, GE old_path = g_build_filename (g_get_home_dir (), "evolution", "local", "Tasks", NULL); new_path = g_build_filename (tasks_component_peek_base_directory (component), - "tasks", "local", "system", NULL); + "local", "system", NULL); migrate_pilot_data ("tasks", "todo", old_path, new_path); g_free (new_path); g_free (old_path); @@ -1048,13 +1049,14 @@ create_memo_sources (MemosComponent *component, GSList *groups; ESourceGroup *group; char *base_uri, *base_uri_proto; + const gchar *base_dir; *on_this_computer = NULL; *on_the_web = NULL; *personal_source = NULL; - base_uri = g_build_filename (memos_component_peek_base_directory (component), - "memos", "local", NULL); + base_dir = memos_component_peek_base_directory (component); + base_uri = g_build_filename (base_dir, "local", NULL); base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL); @@ -1146,6 +1148,7 @@ add_gw_esource (ESourceList *source_list, const char *group_name, const char *s ESourceGroup *group; ESource *source; GSList *ids, *temp ; + GError *error = NULL; char *relative_uri; const char *soap_port; const char * use_ssl; @@ -1180,7 +1183,11 @@ add_gw_esource (ESourceList *source_list, const char *group_name, const char *s e_source_set_color_spec (source, "#EEBC60"); e_source_group_add_source (group, source, -1); - ids = gconf_client_get_list (client, CALENDAR_CONFIG_MEMOS_SELECTED_MEMOS, GCONF_VALUE_STRING, NULL); + ids = gconf_client_get_list (client, CALENDAR_CONFIG_MEMOS_SELECTED_MEMOS, GCONF_VALUE_STRING, &error); + if ( error != NULL ) { + g_warning("%s (%s) %s\n", G_STRLOC, G_STRFUNC, error->message); + g_error_free(error); + } ids = g_slist_append (ids, g_strdup (e_source_peek_uid (source))); gconf_client_set_list (client, CALENDAR_CONFIG_MEMOS_SELECTED_MEMOS, GCONF_VALUE_STRING, ids, NULL); temp = ids; diff --git a/calendar/gui/tasks-component.c b/calendar/gui/tasks-component.c index e1b364c9fa..d843ffef1d 100644 --- a/calendar/gui/tasks-component.c +++ b/calendar/gui/tasks-component.c @@ -128,6 +128,7 @@ ensure_sources (TasksComponent *component) ESourceGroup *on_the_web; ESource *personal_source; char *base_uri, *base_uri_proto; + const gchar *base_dir; on_this_computer = NULL; on_the_web = NULL; @@ -138,9 +139,8 @@ ensure_sources (TasksComponent *component) return; } - base_uri = g_build_filename (tasks_component_peek_base_directory (component), - "tasks", "local", - NULL); + base_dir = tasks_component_peek_base_directory (component); + base_uri = g_build_filename (base_dir, "local", NULL); base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL); @@ -1449,10 +1449,8 @@ tasks_component_init (TasksComponent *component, TasksComponentClass *klass) priv = g_new0 (TasksComponentPrivate, 1); - priv->base_directory = g_build_filename (g_get_home_dir (), ".evolution", NULL); - priv->config_directory = g_build_filename (g_get_home_dir (), - ".evolution", "tasks", "config", - NULL); + priv->base_directory = g_build_filename (e_get_user_data_dir (), "tasks", NULL); + priv->config_directory = g_build_filename (priv->base_directory, "config", NULL); component->priv = priv; ensure_sources (component); diff --git a/composer/ChangeLog b/composer/ChangeLog index f630340f75..c01c8e10b5 100644 --- a/composer/ChangeLog +++ b/composer/ChangeLog @@ -1,3 +1,17 @@ +2008-03-11 Matthew Barnes + + ** Fixes part of bug #513951 + + * e-msg-composer.c (autosave_manager_query_load_orphans), + (autosave_init_file): + Use e_get_user_data_dir() instead of constructing the full path. + + * e-msg-composer.c (e_msg-composer_unrealize), + (e_msg_composer_set_view_from), (e_msg_composer_set_view_replyto), + (e_msg_composer_set_view_to), (e_msg_composer_set_view_postto), + (e_msg_composer_set_view_cc), (e_msg_composer_set_view_bcc): + Emit warnings if saving to GConf fails. + 2008-02-25 Johny Jacob * e-msg-composer.c (e_msg_composer_show_sig_file): Reverting diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c index 5d1dbe23ab..d346bc2821 100644 --- a/composer/e-msg-composer.c +++ b/composer/e-msg-composer.c @@ -1615,9 +1615,9 @@ autosave_manager_query_load_orphans (AutosaveManager *am, GtkWindow *parent) GSList *match = NULL; gint len = strlen (AUTOSAVE_SEED); gint load = FALSE; - gchar *dirname; + const gchar *dirname; - dirname = g_build_filename (g_get_home_dir (), ".evolution", NULL); + dirname = e_get_user_data_dir (); dir = g_dir_open (dirname, 0, NULL); if (!dir) { return; @@ -1646,7 +1646,6 @@ autosave_manager_query_load_orphans (AutosaveManager *am, GtkWindow *parent) } g_dir_close (dir); - g_free (dirname); if (match != NULL) load = e_error_run(parent, "mail-composer:recover-autosave", NULL) == GTK_RESPONSE_YES; @@ -1698,7 +1697,7 @@ autosave_init_file (EMsgComposer *composer) EMsgComposerPrivate *p = composer->priv; if (p->autosave_file == NULL) { p->autosave_file = g_build_filename ( - g_get_home_dir (), ".evolution", AUTOSAVE_SEED, NULL); + e_get_user_data_dir (), AUTOSAVE_SEED, NULL); p->autosave_fd = g_mkstemp (p->autosave_file); return TRUE; } @@ -3587,13 +3586,20 @@ e_msg_composer_unrealize (GtkWidget *widget, gpointer data) { EMsgComposer *composer = E_MSG_COMPOSER (widget); GConfClient *gconf; + GError *error = NULL; int width, height; gtk_window_get_size (GTK_WINDOW (composer), &width, &height); gconf = gconf_client_get_default (); - gconf_client_set_int (gconf, "/apps/evolution/mail/composer/width", width, NULL); - gconf_client_set_int (gconf, "/apps/evolution/mail/composer/height", height, NULL); + if (!gconf_client_set_int (gconf, "/apps/evolution/mail/composer/width", width, &error)) { + g_warning("%s (%s) %s\n", G_STRLOC, G_STRFUNC, error->message); + g_clear_error(&error); + } + if (!gconf_client_set_int (gconf, "/apps/evolution/mail/composer/height", height, &error)) { + g_warning("%s (%s) %s\n", G_STRLOC, G_STRFUNC, error->message); + g_error_free(error); + } g_object_unref (gconf); } @@ -5734,7 +5740,8 @@ e_msg_composer_set_view_from (EMsgComposer *composer, gboolean view_from) { EMsgComposerPrivate *p = composer->priv; GConfClient *gconf; - + GError *error = NULL; + g_return_if_fail (E_IS_MSG_COMPOSER (composer)); if ((p->view_from && view_from) || @@ -5746,7 +5753,11 @@ e_msg_composer_set_view_from (EMsgComposer *composer, gboolean view_from) "state", p->view_from ? "1" : "0", NULL); gconf = gconf_client_get_default (); - gconf_client_set_bool (gconf, "/apps/evolution/mail/composer/view/From", view_from, NULL); + if (!gconf_client_set_bool (gconf, "/apps/evolution/mail/composer/view/From", view_from, &error)) { + g_warning("%s (%s) %s\n", G_STRLOC, G_STRFUNC, error->message); + g_error_free(error); + } + g_object_unref (gconf); e_msg_composer_hdrs_set_visible (E_MSG_COMPOSER_HDRS (p->hdrs), @@ -5784,7 +5795,8 @@ e_msg_composer_set_view_replyto (EMsgComposer *composer, gboolean view_replyto) { EMsgComposerPrivate *p = composer->priv; GConfClient *gconf; - + GError *error = NULL; + g_return_if_fail (E_IS_MSG_COMPOSER (composer)); if ((p->view_replyto && view_replyto) || @@ -5797,7 +5809,10 @@ e_msg_composer_set_view_replyto (EMsgComposer *composer, gboolean view_replyto) /* we do this /only/ if the fields is in the visible_mask */ gconf = gconf_client_get_default (); - gconf_client_set_bool (gconf, "/apps/evolution/mail/composer/view/ReplyTo", view_replyto, NULL); + if (!gconf_client_set_bool (gconf, "/apps/evolution/mail/composer/view/ReplyTo", view_replyto, &error)) { + g_warning("%s (%s) %s\n", G_STRLOC, G_STRFUNC, error->message); + g_error_free(error); + } g_object_unref (gconf); e_msg_composer_hdrs_set_visible (E_MSG_COMPOSER_HDRS (p->hdrs), @@ -5835,7 +5850,8 @@ e_msg_composer_set_view_to (EMsgComposer *composer, gboolean view_to) { EMsgComposerPrivate *p = composer->priv; GConfClient *gconf; - + GError *error = NULL; + g_return_if_fail (E_IS_MSG_COMPOSER (composer)); if ((p->view_to && view_to) || @@ -5848,7 +5864,10 @@ e_msg_composer_set_view_to (EMsgComposer *composer, gboolean view_to) if ((E_MSG_COMPOSER_HDRS(p->hdrs))->visible_mask & E_MSG_COMPOSER_VISIBLE_TO) { gconf = gconf_client_get_default (); - gconf_client_set_bool (gconf, "/apps/evolution/mail/composer/view/To", view_to, NULL); + if (!gconf_client_set_bool (gconf, "/apps/evolution/mail/composer/view/To", view_to, &error)) { + g_warning("%s (%s) %s\n", G_STRLOC, G_STRFUNC, error->message); + g_error_free(error); + } g_object_unref (gconf); } @@ -5887,6 +5906,8 @@ void e_msg_composer_set_view_postto (EMsgComposer *composer, gboolean view_postto) { GConfClient *gconf; + GError *error = NULL; + EMsgComposerPrivate *p = composer->priv; g_return_if_fail (E_IS_MSG_COMPOSER (composer)); @@ -5901,7 +5922,10 @@ e_msg_composer_set_view_postto (EMsgComposer *composer, gboolean view_postto) if ((E_MSG_COMPOSER_HDRS(p->hdrs))->visible_mask & E_MSG_COMPOSER_VISIBLE_POSTTO) { gconf = gconf_client_get_default (); - gconf_client_set_bool (gconf, "/apps/evolution/mail/composer/view/PostTo", view_postto, NULL); + if (!gconf_client_set_bool (gconf, "/apps/evolution/mail/composer/view/PostTo", view_postto, &error)) { + g_warning("%s (%s) %s\n", G_STRLOC, G_STRFUNC, error->message); + g_error_free(error); + } g_object_unref (gconf); } @@ -5940,6 +5964,7 @@ void e_msg_composer_set_view_cc (EMsgComposer *composer, gboolean view_cc) { GConfClient *gconf; + GError *error = NULL; EMsgComposerPrivate *p = composer->priv; g_return_if_fail (E_IS_MSG_COMPOSER (composer)); @@ -5954,7 +5979,10 @@ e_msg_composer_set_view_cc (EMsgComposer *composer, gboolean view_cc) if ((E_MSG_COMPOSER_HDRS (p->hdrs))->visible_mask & E_MSG_COMPOSER_VISIBLE_CC) { gconf = gconf_client_get_default (); - gconf_client_set_bool (gconf, "/apps/evolution/mail/composer/view/Cc", view_cc, NULL); + if (!gconf_client_set_bool (gconf, "/apps/evolution/mail/composer/view/Cc", view_cc, &error)) { + g_warning("%s (%s) %s\n", G_STRLOC, G_STRFUNC, error->message); + g_error_free(error); + } g_object_unref (gconf); } @@ -5994,6 +6022,7 @@ void e_msg_composer_set_view_bcc (EMsgComposer *composer, gboolean view_bcc) { GConfClient *gconf; + GError *error = NULL; EMsgComposerPrivate *p = composer->priv; g_return_if_fail (E_IS_MSG_COMPOSER (composer)); @@ -6008,7 +6037,10 @@ e_msg_composer_set_view_bcc (EMsgComposer *composer, gboolean view_bcc) if ((E_MSG_COMPOSER_HDRS (p->hdrs))->visible_mask & E_MSG_COMPOSER_VISIBLE_BCC) { gconf = gconf_client_get_default (); - gconf_client_set_bool (gconf, "/apps/evolution/mail/composer/view/Bcc", view_bcc, NULL); + if (!gconf_client_set_bool (gconf, "/apps/evolution/mail/composer/view/Bcc", view_bcc, &error)) { + g_warning("%s (%s) %s\n", G_STRLOC, G_STRFUNC, error->message); + g_error_free(error); + } g_object_unref (gconf); } diff --git a/e-util/ChangeLog b/e-util/ChangeLog index a52c585e10..8c6978b5e0 100644 --- a/e-util/ChangeLog +++ b/e-util/ChangeLog @@ -1,3 +1,19 @@ +2008-03-11 Matthew Barnes + + ** Fixes part of bug #513951 + + * e-mktemp.c (get_dir): + * e-util.c (get_lock_filename): + Use e_get_user_data_dir() instead of constructing the full path. + + * e-util.c (e_get_user_data_dir): + New function returns the base directory for Evolution user data. + This should be the /only/ place in the application where this + directory is hard-coded. + + * e-util.c (e_file_update_save_path), (e_file_get_save_path): + Emit warnings when saving to GConf fails. + 2008-02-19 Milan Crha ** Fix for bug #209353 diff --git a/e-util/e-mktemp.c b/e-util/e-mktemp.c index 9ff294f929..e1f6a382bb 100644 --- a/e-util/e-mktemp.c +++ b/e-util/e-mktemp.c @@ -110,7 +110,7 @@ get_dir (gboolean make) #ifdef TEMP_HOME char *tmpdir = NULL; - tmpdir = g_build_filename(g_get_home_dir(), ".evolution", + tmpdir = g_build_filename(e_get_user_data_dir (), "cache", "tmp", NULL); path = g_string_new(tmpdir); if (make && g_mkdir_with_parents(tmpdir, 0777) == -1) { diff --git a/e-util/e-util.c b/e-util/e-util.c index b1634bcfff..87a78341f2 100644 --- a/e-util/e-util.c +++ b/e-util/e-util.c @@ -49,6 +49,26 @@ #include "e-util.h" #include "e-util-private.h" +/** + * e_get_user_data_dir: + * + * Returns the base directory for Evolution-specific user data. + * The string is owned by Evolution and must not be modified or freed. + * + * Returns: base directory for user data + **/ +const gchar * +e_get_user_data_dir (void) +{ + static gchar* dirname = NULL; + + if (G_UNLIKELY (dirname == NULL)) + dirname = g_build_filename ( + g_get_home_dir (), ".evolution", NULL); + + return dirname; +} + /** * e_str_without_underscores: * @s: the string to strip underscores from. @@ -989,8 +1009,13 @@ void e_file_update_save_path (gchar *uri, gboolean free) { GConfClient *gconf = gconf_client_get_default(); + GError *error = NULL; - gconf_client_set_string(gconf, "/apps/evolution/mail/save_dir", uri, NULL); + gconf_client_set_string(gconf, "/apps/evolution/mail/save_dir", uri, &error); + if (error != NULL) { + g_warning("%s (%s) %s", G_STRLOC, G_STRFUNC, error->message); + g_clear_error(&error); + } g_object_unref(gconf); if (free) g_free(uri); @@ -1007,9 +1032,14 @@ gchar * e_file_get_save_path (void) { GConfClient *gconf = gconf_client_get_default(); + GError *error = NULL; gchar *uri; - uri = gconf_client_get_string(gconf, "/apps/evolution/mail/save_dir", NULL); + uri = gconf_client_get_string(gconf, "/apps/evolution/mail/save_dir", &error); + if (error != NULL) { + g_warning("%s (%s) %s", G_STRLOC, G_STRFUNC, error->message); + g_clear_error(&error); + } g_object_unref(gconf); if (uri == NULL) @@ -1027,7 +1057,7 @@ get_lock_filename (void) static gchar *filename = NULL; if (G_UNLIKELY (filename == NULL)) - filename = g_build_filename (g_get_home_dir (), ".evolution", LOCK_FILE, NULL); + filename = g_build_filename (e_get_user_data_dir (), LOCK_FILE, NULL); return filename; } diff --git a/e-util/e-util.h b/e-util/e-util.h index fc8da98b7f..15003d7226 100644 --- a/e-util/e-util.h +++ b/e-util/e-util.h @@ -44,6 +44,8 @@ typedef enum { E_FOCUS_END } EFocus; +const gchar * e_get_user_data_dir (void); + char * e_str_without_underscores (const char *s); gint e_str_compare (gconstpointer x, gconstpointer y); diff --git a/mail/ChangeLog b/mail/ChangeLog index c20c4b84da..00550adad4 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,13 @@ +2008-03-11 Matthew Barnes + + ** Fixes part of bug #513951 + + * mail-config.c (gconf_mime_types_changed): + Adapt to new meaning of xxx_component_peek_base_directory(). + + * mail-component.c: + Use e_get_user_data_dir() instead of constructing the full path. + 2008-03-06 Tobias Mueller ** Fix for bug #520745 diff --git a/mail/mail-component.c b/mail/mail-component.c index 0e5e19a398..66f0833658 100644 --- a/mail/mail-component.c +++ b/mail/mail-component.c @@ -49,6 +49,7 @@ #include "e-util/e-icon-factory.h" #include "misc/e-info-label.h" +#include "e-util/e-util.h" #include "e-util/e-error.h" #include "e-util/e-util-private.h" #include "e-util/e-logger.h" @@ -281,7 +282,7 @@ mc_setup_local_store(MailComponent *mc) camel_exception_init(&ex); url = camel_url_new("mbox:", NULL); - tmp = g_strdup_printf("%s/mail/local", p->base_directory); + tmp = g_build_filename (p->base_directory, "local", NULL); camel_url_set_path(url, tmp); g_free(tmp); tmp = camel_url_to_string(url, 0); @@ -356,7 +357,7 @@ setup_search_context (MailComponent *component) MailComponentPrivate *priv = component->priv; if (priv->search_context == NULL) { - char *user = g_build_filename(component->priv->base_directory, "mail/searches.xml", NULL); + char *user = g_build_filename(component->priv->base_directory, "searches.xml", NULL); char *system = g_build_filename (EVOLUTION_PRIVDATADIR, "searchtypes.xml", NULL); priv->search_context = (RuleContext *)em_search_context_new (); @@ -1046,7 +1047,7 @@ impl_upgradeFromVersion (PortableServer_Servant servant, const short major, cons component = mail_component_peek (); camel_exception_init (&ex); - if (em_migrate (component->priv->base_directory, major, minor, revision, &ex) == -1) { + if (em_migrate (e_get_user_data_dir (), major, minor, revision, &ex) == -1) { GNOME_Evolution_Component_UpgradeFailed *failedex; failedex = GNOME_Evolution_Component_UpgradeFailed__alloc(); @@ -1208,24 +1209,16 @@ mail_component_init (MailComponent *component) priv->lock = g_mutex_new(); priv->quit_state = -1; - priv->base_directory = g_build_filename (g_get_home_dir (), ".evolution", NULL); -#ifdef G_OS_WIN32 - { - char *p = priv->base_directory; - while ((p = strchr(p, '\\'))) - *p++ = '/'; - } -#endif - if (g_mkdir_with_parents (priv->base_directory, 0777) == -1 && errno != EEXIST) + if (g_mkdir_with_parents (e_get_user_data_dir (), 0777) == -1 && errno != EEXIST) abort (); - priv->model = em_folder_tree_model_new (priv->base_directory); + priv->model = em_folder_tree_model_new (e_get_user_data_dir ()); priv->logger = e_logger_create ("mail"); priv->activity_handler = e_activity_handler_new (); e_activity_handler_set_logger (priv->activity_handler, priv->logger); e_activity_handler_set_error_flush_time (priv->activity_handler, mail_config_get_error_timeout ()*1000); - mail_session_init (priv->base_directory); + mail_session_init (e_get_user_data_dir ()); priv->async_event = mail_async_event_new(); priv->store_hash = g_hash_table_new_full ( diff --git a/mail/mail-config.c b/mail/mail-config.c index 90de0ec75b..4828187a5b 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -371,13 +371,17 @@ gconf_mime_types_changed (GConfClient *client, guint cnxn_id, void mail_config_init (void) { + const gchar *base_dir; + if (config) return; + base_dir = mail_component_peek_base_directory (NULL); + config = g_new0 (MailConfig, 1); config->gconf = gconf_client_get_default (); config->mime_types = g_ptr_array_new (); - config->gtkrc = g_build_filename (g_get_home_dir (), ".evolution", "mail", "config", "gtkrc-mail-fonts", NULL); + config->gtkrc = g_build_filename (base_dir, "config", "gtkrc-mail-fonts", NULL); mail_config_clear (); diff --git a/plugins/face/ChangeLog b/plugins/face/ChangeLog index 2b47cac720..86a2af2140 100644 --- a/plugins/face/ChangeLog +++ b/plugins/face/ChangeLog @@ -1,3 +1,10 @@ +2008-03-11 Matthew Barnes + + ** Fixes part of bug #513951 + + * face.c (org_gnome_composer_face): + Use e_get_user_data_dir() instead of constructing the full path. + 2007-10-09 Matthew Barnes ** Fixes part of bug #437579 diff --git a/plugins/face/face.c b/plugins/face/face.c index 54010b625b..45851bee18 100644 --- a/plugins/face/face.c +++ b/plugins/face/face.c @@ -29,6 +29,7 @@ #include #include #include +#include #define d(x) x @@ -42,7 +43,7 @@ void org_gnome_composer_face (EPlugin * ep, EMMenuTargetWidget * t) GError *error = NULL; composer = (EMsgComposer *) t->target.widget; - filename = g_build_filename (g_get_home_dir (), ".evolution", "faces", NULL); + filename = g_build_filename (e_get_user_data_dir (), "faces", NULL); g_file_get_contents (filename, &file_contents, NULL, &error); if (error) { diff --git a/smime/ChangeLog b/smime/ChangeLog index d9703c0efa..ce7e36dd7b 100644 --- a/smime/ChangeLog +++ b/smime/ChangeLog @@ -1,3 +1,10 @@ +2008-03-11 Matthew Barnes + + ** Fixes part of bug #513951 + + * lib/e-cert-db.c (initialize_nss): + Use e_get_user_data_dir() instead of constructing the full path. + 2007-10-09 Matthew Barnes ** Fixes part of bug #437579 diff --git a/smime/lib/e-cert-db.c b/smime/lib/e-cert-db.c index 91301052af..a224026335 100644 --- a/smime/lib/e-cert-db.c +++ b/smime/lib/e-cert-db.c @@ -87,6 +87,7 @@ #include "plstr.h" #include "prprf.h" #include "prmem.h" +#include "e-util/e-util.h" #include "e-util/e-dialog-utils.h" #include "e-util/e-util-private.h" #include @@ -177,18 +178,11 @@ initialize_nss (void) char *evolution_dir_path; gboolean success; - evolution_dir_path = g_build_filename (g_get_home_dir (), ".evolution", NULL); - #ifdef G_OS_WIN32 /* NSS wants filenames in system codepage */ - { - char *cp_path = g_win32_locale_filename_from_utf8 (evolution_dir_path); - - if (cp_path) { - g_free (evolution_dir_path); - evolution_dir_path = cp_path; - } - } + evolution_dir_path = g_win32_locale_filename_from_utf8 (e_get_user_data_dir ()); +#else + evolution_dir_path = g_strdup (e_get_user_data_dir ()); #endif /* we initialize NSS here to make sure it only happens once */ -- cgit v1.2.3