aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend
diff options
context:
space:
mode:
authorChris Toshok <toshok@ximian.com>2002-02-21 12:34:28 +0800
committerChris Toshok <toshok@src.gnome.org>2002-02-21 12:34:28 +0800
commit9193a985af25894f53f1b01ad68f87e9f5049039 (patch)
tree59175f1492f3a807a7190cd7058cc1b48939fcdb /addressbook/backend
parent18011729aec7fdb33f94129b5240451ec7d273d0 (diff)
downloadgsoc2013-evolution-9193a985af25894f53f1b01ad68f87e9f5049039.tar.gz
gsoc2013-evolution-9193a985af25894f53f1b01ad68f87e9f5049039.tar.zst
gsoc2013-evolution-9193a985af25894f53f1b01ad68f87e9f5049039.zip
track change to signature, and (for now) just change all the return
2002-02-20 Chris Toshok <toshok@ximian.com> * backend/pas/pas-backend-file.c (pas_backend_file_load_uri): track change to signature, and (for now) just change all the return FALSE's to _RepositoryOffline (what FALSE used to map to in pas_book_factory_process_request), and change TRUE to _Success. * backend/pas/pas-backend-ldap.c (pas_backend_ldap_load_uri): track change to signature, and differentiate between pas_backend_ldap_connect failing (RepositoryOffline), and ldap_url_parse failing (OtherError). * backend/pas/pas-book-factory.c (pas_book_factory_process_request): since pas_backend_load_uri returns status now, use it to nodify the BookListener if there's a failure. * backend/pas/pas-backend.c (pas_backend_load_uri): track change to signature. * backend/pas/pas-backend.h: change return type of pas_backend_load_uri to GNOME_Evolution_Addressbook_BookListener_CallStatus to allow differentiation between failure types. * backend/ebook/e-book-listener.c (e_book_listener_convert_status): handle _AUTHENTICATION_FAILED. * backend/ebook/e-book-types.h (EBookStatus): add _AUTHENTICATION_FAILED. svn path=/trunk/; revision=15779
Diffstat (limited to 'addressbook/backend')
-rw-r--r--addressbook/backend/ebook/e-book-listener.c2
-rw-r--r--addressbook/backend/ebook/e-book-types.h1
-rw-r--r--addressbook/backend/pas/pas-backend-file.c19
-rw-r--r--addressbook/backend/pas/pas-backend-ldap.c8
-rw-r--r--addressbook/backend/pas/pas-backend.c2
-rw-r--r--addressbook/backend/pas/pas-backend.h6
-rw-r--r--addressbook/backend/pas/pas-book-factory.c7
7 files changed, 28 insertions, 17 deletions
diff --git a/addressbook/backend/ebook/e-book-listener.c b/addressbook/backend/ebook/e-book-listener.c
index a66701847d..139eb849fa 100644
--- a/addressbook/backend/ebook/e-book-listener.c
+++ b/addressbook/backend/ebook/e-book-listener.c
@@ -620,6 +620,8 @@ e_book_listener_convert_status (const GNOME_Evolution_Addressbook_BookListener_C
return E_BOOK_STATUS_SUCCESS;
case GNOME_Evolution_Addressbook_BookListener_RepositoryOffline:
return E_BOOK_STATUS_REPOSITORY_OFFLINE;
+ case GNOME_Evolution_Addressbook_BookListener_AuthenticationFailed:
+ return E_BOOK_STATUS_AUTHENTICATION_FAILED;
case GNOME_Evolution_Addressbook_BookListener_PermissionDenied:
return E_BOOK_STATUS_PERMISSION_DENIED;
case GNOME_Evolution_Addressbook_BookListener_CardNotFound:
diff --git a/addressbook/backend/ebook/e-book-types.h b/addressbook/backend/ebook/e-book-types.h
index 0a477678eb..9ce3323bdf 100644
--- a/addressbook/backend/ebook/e-book-types.h
+++ b/addressbook/backend/ebook/e-book-types.h
@@ -25,6 +25,7 @@ typedef enum {
E_BOOK_STATUS_CARD_ID_ALREADY_EXISTS,
E_BOOK_STATUS_PROTOCOL_NOT_SUPPORTED,
E_BOOK_STATUS_CANCELLED,
+ E_BOOK_STATUS_AUTHENTICATION_FAILED,
E_BOOK_STATUS_OTHER_ERROR
} EBookStatus;
diff --git a/addressbook/backend/pas/pas-backend-file.c b/addressbook/backend/pas/pas-backend-file.c
index 57f9462bb8..7d6499578d 100644
--- a/addressbook/backend/pas/pas-backend-file.c
+++ b/addressbook/backend/pas/pas-backend-file.c
@@ -58,6 +58,7 @@ struct _PASBackendFilePrivate {
DB *file_db;
EList *book_views;
gboolean writable;
+ GHashTable *address_lists;
};
struct _PASBackendFileCursorPrivate {
@@ -702,10 +703,12 @@ pas_backend_file_process_modify_card (PASBackend *backend,
pas_book_view_notify_add_1 (view->book_view, req->vcard);
else /* if (old_match) */
pas_book_view_notify_remove (view->book_view, id);
+
pas_book_view_notify_complete (view->book_view);
bonobo_object_release_unref(bonobo_object_corba_objref(BONOBO_OBJECT(view->book_view)), &ev);
}
+
gtk_object_unref(GTK_OBJECT(iterator));
pas_book_respond_modify (
@@ -1236,7 +1239,7 @@ ORG:Ximian, Inc.;\n\
NOTE:Welcome to the Ximian Addressbook.\n\
END:VCARD"
-static gboolean
+static GNOME_Evolution_Addressbook_BookListener_CallStatus
pas_backend_file_load_uri (PASBackend *backend,
const char *uri)
{
@@ -1255,18 +1258,18 @@ pas_backend_file_load_uri (PASBackend *backend,
minor != 1 ||
patch != 17) {
g_warning ("Wrong version of libdb.");
- return FALSE;
+ return GNOME_Evolution_Addressbook_BookListener_OtherError;
}
filename = pas_backend_file_extract_path_from_uri (uri);
db_error = e_db3_utils_maybe_recover (filename);
if (db_error != 0)
- return FALSE;
+ return GNOME_Evolution_Addressbook_BookListener_OtherError;
db_error = db_create (&db, NULL, 0);
if (db_error != 0)
- return FALSE;
+ return GNOME_Evolution_Addressbook_BookListener_OtherError;
db_error = db->open (db, filename, NULL, DB_HASH, 0, 0666);
@@ -1274,7 +1277,7 @@ pas_backend_file_load_uri (PASBackend *backend,
db_error = e_db3_utils_upgrade_format (filename);
if (db_error != 0)
- return FALSE;
+ return GNOME_Evolution_Addressbook_BookListener_OtherError;
db_error = db->open (db, filename, NULL, DB_HASH, 0, 0666);
}
@@ -1312,7 +1315,7 @@ pas_backend_file_load_uri (PASBackend *backend,
if (db_error != 0) {
bf->priv->file_db = NULL;
- return FALSE;
+ return GNOME_Evolution_Addressbook_BookListener_OtherError;
}
bf->priv->writable = writable;
@@ -1323,7 +1326,7 @@ pas_backend_file_load_uri (PASBackend *backend,
db->close (db, 0);
bf->priv->file_db = NULL;
bf->priv->writable = FALSE;
- return FALSE;
+ return GNOME_Evolution_Addressbook_BookListener_OtherError;
}
g_free(bf->priv->uri);
@@ -1332,7 +1335,7 @@ pas_backend_file_load_uri (PASBackend *backend,
g_free (bf->priv->filename);
bf->priv->filename = filename;
- return TRUE;
+ return GNOME_Evolution_Addressbook_BookListener_Success;
}
/* Get_uri handler for the addressbook file backend */
diff --git a/addressbook/backend/pas/pas-backend-ldap.c b/addressbook/backend/pas/pas-backend-ldap.c
index 3071fa7e45..60f2103c79 100644
--- a/addressbook/backend/pas/pas-backend-ldap.c
+++ b/addressbook/backend/pas/pas-backend-ldap.c
@@ -2553,7 +2553,7 @@ pas_backend_ldap_book_destroy_cb (PASBook *book, gpointer data)
pas_backend_remove_client (PAS_BACKEND (backend), book);
}
-static gboolean
+static GNOME_Evolution_Addressbook_BookListener_CallStatus
pas_backend_ldap_load_uri (PASBackend *backend,
const char *uri)
{
@@ -2609,11 +2609,11 @@ pas_backend_ldap_load_uri (PASBackend *backend,
pas_backend_ldap_connect (bl);
if (bl->priv->ldap == NULL)
- return FALSE;
+ return GNOME_Evolution_Addressbook_BookListener_RepositoryOffline;
else
- return TRUE;
+ return GNOME_Evolution_Addressbook_BookListener_Success;
} else
- return FALSE;
+ return GNOME_Evolution_Addressbook_BookListener_OtherError;
}
/* Get_uri handler for the addressbook LDAP backend */
diff --git a/addressbook/backend/pas/pas-backend.c b/addressbook/backend/pas/pas-backend.c
index 593ed624d2..a17e014002 100644
--- a/addressbook/backend/pas/pas-backend.c
+++ b/addressbook/backend/pas/pas-backend.c
@@ -28,7 +28,7 @@ pas_backend_construct (PASBackend *backend)
return TRUE;
}
-gboolean
+GNOME_Evolution_Addressbook_BookListener_CallStatus
pas_backend_load_uri (PASBackend *backend,
const char *uri)
{
diff --git a/addressbook/backend/pas/pas-backend.h b/addressbook/backend/pas/pas-backend.h
index bd9a12c2a0..cdf8f37c30 100644
--- a/addressbook/backend/pas/pas-backend.h
+++ b/addressbook/backend/pas/pas-backend.h
@@ -40,7 +40,7 @@ typedef struct {
GtkObjectClass parent_class;
/* Virtual methods */
- gboolean (*load_uri) (PASBackend *backend, const char *uri);
+ GNOME_Evolution_Addressbook_BookListener_CallStatus (*load_uri) (PASBackend *backend, const char *uri);
const char *(* get_uri) (PASBackend *backend);
gboolean (*add_client) (PASBackend *backend, GNOME_Evolution_Addressbook_BookListener listener);
void (*remove_client) (PASBackend *backend, PASBook *book);
@@ -53,7 +53,9 @@ typedef struct {
typedef PASBackend * (*PASBackendFactoryFn) (void);
gboolean pas_backend_construct (PASBackend *backend);
-gboolean pas_backend_load_uri (PASBackend *backend,
+
+GNOME_Evolution_Addressbook_BookListener_CallStatus
+ pas_backend_load_uri (PASBackend *backend,
const char *uri);
const char *pas_backend_get_uri (PASBackend *backend);
diff --git a/addressbook/backend/pas/pas-book-factory.c b/addressbook/backend/pas/pas-book-factory.c
index 43bb69a35c..9c713f5ce8 100644
--- a/addressbook/backend/pas/pas-book-factory.c
+++ b/addressbook/backend/pas/pas-book-factory.c
@@ -278,16 +278,19 @@ pas_book_factory_process_request (PASBookFactory *factory,
backend = g_hash_table_lookup (factory->priv->active_server_map, uri);
if (!backend) {
+ GNOME_Evolution_Addressbook_BookListener_CallStatus status;
+
backend = pas_book_factory_launch_backend (factory, listener, uri);
if (!backend)
goto out;
- if (!pas_backend_load_uri (backend, uri) ) {
+ status = pas_backend_load_uri (backend, uri);
+ if (status != GNOME_Evolution_Addressbook_BookListener_Success) {
/* tell the listener that we failed to open the book */
CORBA_exception_init (&ev);
GNOME_Evolution_Addressbook_BookListener_notifyBookOpened (
- listener, GNOME_Evolution_Addressbook_BookListener_RepositoryOffline,
+ listener, status,
CORBA_OBJECT_NIL,
&ev);