[evolution-kolab/ek-wip-porting: 5/8] kolab-util-backend: fixed ESource UID handling
- From: Christian Hilberg <chilberg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-kolab/ek-wip-porting: 5/8] kolab-util-backend: fixed ESource UID handling
- Date: Thu, 15 Mar 2012 22:59:19 +0000 (UTC)
commit 17f64ec91a69b99e17168b759f6015a136fb9aee
Author: Christian Hilberg <hilberg kernelconcepts de>
Date: Thu Mar 15 23:46:09 2012 +0100
kolab-util-backend: fixed ESource UID handling
* set UID field on KolabSettingsHandler from ESource
* extended the Camel account UID generator to use
the ESource UID information from KolabSettingsHandler
* let KolabMailIMAPClient make use of this (disk
locations for calendar / contacts now closely
resemble those of mail)
* error handling fixups
src/libekolab/kolab-mail-imap-client.c | 9 +----
src/libekolab/kolab-util-backend.c | 50 +++++++++++++++++++++++++++++--
2 files changed, 48 insertions(+), 11 deletions(-)
---
diff --git a/src/libekolab/kolab-mail-imap-client.c b/src/libekolab/kolab-mail-imap-client.c
index c8f4424..a9f772d 100644
--- a/src/libekolab/kolab-mail-imap-client.c
+++ b/src/libekolab/kolab-mail-imap-client.c
@@ -801,19 +801,14 @@ kolab_mail_imap_client_bringup (KolabMailImapClient *self,
g_propagate_error (err, tmp_err);
return FALSE;
}
- extd_account_uid = g_strconcat (KOLAB_CAMEL_PROVIDER_PROTOCOL,
- "__",
- account_uid,
- NULL);
- g_free (account_uid);
/* register Kolab service (store) with CamelSession */
service = camel_session_add_service (CAMEL_SESSION (priv->session),
- extd_account_uid,
+ account_uid,
KOLAB_CAMEL_PROVIDER_PROTOCOL,
CAMEL_PROVIDER_STORE,
&tmp_err);
- g_free (extd_account_uid);
+ g_free (account_uid);
if (tmp_err != NULL) {
if (service != NULL) {
/* should not happen */
diff --git a/src/libekolab/kolab-util-backend.c b/src/libekolab/kolab-util-backend.c
index 04cefbd..91a5a81 100644
--- a/src/libekolab/kolab-util-backend.c
+++ b/src/libekolab/kolab-util-backend.c
@@ -177,7 +177,10 @@ KolabSyncStrategyID
kolab_util_misc_sync_value_from_property (const gchar *sync_prop)
{
KolabSyncStrategyID sid = KOLAB_SYNC_STRATEGY_DEFAULT;
- g_return_val_if_fail (sync_prop != NULL, KOLAB_SYNC_STRATEGY_DEFAULT);
+
+ if (sync_prop == NULL)
+ return KOLAB_SYNC_STRATEGY_DEFAULT;
+
sid = kolab_util_misc_generic_integer_from_property (sync_prop,
KOLAB_SYNC_STRATEGY_DEFAULT);
return sid;
@@ -187,7 +190,10 @@ KolabTLSVariantID
kolab_util_misc_tls_variant_from_property (const gchar *tls_variant)
{
KolabTLSVariantID tvid = KOLAB_TLS_VARIANT_DEFAULT;
- g_return_val_if_fail (tls_variant != NULL, KOLAB_TLS_VARIANT_DEFAULT);
+
+ if (tls_variant == NULL)
+ return KOLAB_TLS_VARIANT_DEFAULT;
+
tvid = kolab_util_misc_generic_integer_from_property (tls_variant,
KOLAB_TLS_VARIANT_DEFAULT);
return tvid;
@@ -197,7 +203,10 @@ KolabReqPkcs11
kolab_util_misc_req_pkcs11_from_property (const gchar *req_pkcs11_prop)
{
KolabReqPkcs11 pkreq = KOLAB_PKCS11_INFRASTRUCTURE_DEFAULT;
- g_return_val_if_fail (req_pkcs11_prop != NULL, KOLAB_PKCS11_INFRASTRUCTURE_DEFAULT);
+
+ if (req_pkcs11_prop == NULL)
+ return KOLAB_PKCS11_INFRASTRUCTURE_DEFAULT;
+
pkreq = kolab_util_misc_generic_integer_from_property (req_pkcs11_prop,
KOLAB_PKCS11_INFRASTRUCTURE_DEFAULT);
return pkreq;
@@ -285,6 +294,16 @@ kolab_util_backend_prepare_settings (KolabSettingsHandler *ksettings,
GError *error = NULL;
g_debug ("%s()[%u] called.", __func__, __LINE__);
if (esource != NULL) {
+ prop_str = e_source_peek_uid (esource);
+ (void)kolab_settings_handler_set_char_field (ksettings,
+ KOLAB_SETTINGS_HANDLER_CHAR_FIELD_ESOURCE_UID,
+ g_strdup (prop_str),
+ &error);
+ if (error != NULL) {
+ g_warning ("%s()[%u] error: %s", __func__, __LINE__, error->message);
+ g_error_free (error);
+ error = NULL;
+ }
prop_str = e_source_get_uri (esource);
(void)kolab_settings_handler_set_char_field (ksettings,
KOLAB_SETTINGS_HANDLER_CHAR_FIELD_KOLAB_URI,
@@ -518,12 +537,30 @@ kolab_util_backend_account_uid_new_from_settings (KolabSettingsHandler *ksetting
{
const gchar *user = NULL;
const gchar *server = NULL;
+ const gchar *esource_uid = NULL;
gchar *account_uid = NULL;
+ gchar *tmp_str = NULL;
GError *tmp_err = NULL;
g_assert (KOLAB_IS_SETTINGS_HANDLER (ksettings));
g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+ esource_uid = kolab_settings_handler_get_char_field (ksettings,
+ KOLAB_SETTINGS_HANDLER_CHAR_FIELD_ESOURCE_UID,
+ &tmp_err);
+ if (tmp_err != NULL) {
+ g_warning ("%s: %s", __func__, tmp_err->message);
+ g_error_free (tmp_err);
+ tmp_err = NULL;
+ }
+
+ if (esource_uid != NULL) {
+ tmp_str = g_strdup (esource_uid);
+ goto done;
+ }
+
+ /* fallback in case we don't have an ESource UID set */
+
user = kolab_settings_handler_get_char_field (ksettings,
KOLAB_SETTINGS_HANDLER_CHAR_FIELD_KOLAB_USER_NAME,
&tmp_err);
@@ -539,7 +576,12 @@ kolab_util_backend_account_uid_new_from_settings (KolabSettingsHandler *ksetting
return NULL;
}
- account_uid = g_strconcat (user, "@", server, NULL);
+ tmp_str = g_strconcat (user, "@", server, NULL);
+
+ done:
+
+ account_uid = g_strconcat (KOLAB_CAMEL_PROVIDER_PROTOCOL, "__", tmp_str, NULL);
+ g_free (tmp_str);
return account_uid;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]