aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog8
-rw-r--r--addressbook/gui/component/addressbook-component.c16
-rw-r--r--addressbook/gui/component/addressbook-migrate.c2
-rw-r--r--addressbook/gui/component/addressbook-migrate.h4
4 files changed, 26 insertions, 4 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index 69bd24572a..efa83d0e7f 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,11 @@
+2004-05-11 Not Zed <NotZed@Ximian.com>
+
+ * gui/component/addressbook-component.c (impl_upgradeFromVersion):
+ set exception properly on failure.
+
+ * gui/component/addressbook-migrate.c (addressbook_migrate): take
+ a GError error return. Doesn't do anything with it ... but ...
+
2004-05-11 Dan Winship <danw@ximian.com>
* gui/component/GNOME_Evolution_Addressbook.server.in.in: Remove
diff --git a/addressbook/gui/component/addressbook-component.c b/addressbook/gui/component/addressbook-component.c
index ad43ba8f27..e74b0d7dda 100644
--- a/addressbook/gui/component/addressbook-component.c
+++ b/addressbook/gui/component/addressbook-component.c
@@ -170,10 +170,22 @@ impl_requestCreateItem (PortableServer_Servant servant,
e_book_async_get_default_addressbook (book_loaded_cb, g_strdup (item_type_name));
}
-static CORBA_boolean
+static void
impl_upgradeFromVersion (PortableServer_Servant servant, short major, short minor, short revision, CORBA_Environment *ev)
{
- return addressbook_migrate (addressbook_component_peek (), major, minor, revision);
+ GError *err = NULL;
+
+ if (!addressbook_migrate (addressbook_component_peek (), major, minor, revision, &err)) {
+ GNOME_Evolution_Component_UpgradeFailed *failedex;
+
+ failedex = GNOME_Evolution_Component_UpgradeFailed__alloc();
+ failedex->what = CORBA_string_dup(_("Failed upgrading Addressbook settings or folders."));
+ failedex->why = CORBA_string_dup(err->message);
+ CORBA_exception_set(ev, CORBA_USER_EXCEPTION, ex_GNOME_Evolution_Component_UpgradeFailed, failedex);
+ }
+
+ if (err)
+ g_error_free(err);
}
static CORBA_boolean
diff --git a/addressbook/gui/component/addressbook-migrate.c b/addressbook/gui/component/addressbook-migrate.c
index 5474ba9c00..32fbf1ca3e 100644
--- a/addressbook/gui/component/addressbook-migrate.c
+++ b/addressbook/gui/component/addressbook-migrate.c
@@ -1043,7 +1043,7 @@ migration_context_free (MigrationContext *context)
}
int
-addressbook_migrate (AddressbookComponent *component, int major, int minor, int revision)
+addressbook_migrate (AddressbookComponent *component, int major, int minor, int revision, GError **err)
{
ESourceGroup *on_this_computer;
ESourceGroup *on_ldap_servers;
diff --git a/addressbook/gui/component/addressbook-migrate.h b/addressbook/gui/component/addressbook-migrate.h
index 89dce7a91b..dc7c473e12 100644
--- a/addressbook/gui/component/addressbook-migrate.h
+++ b/addressbook/gui/component/addressbook-migrate.h
@@ -24,6 +24,8 @@
#include "addressbook-component.h"
-int addressbook_migrate (AddressbookComponent *component, int major, int minor, int revision);
+struct _GError;
+
+int addressbook_migrate (AddressbookComponent *component, int major, int minor, int revision, struct _GError **err);
#endif /* _ADDRESSBOOK_MIGRATE_H_ */