aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog13
-rw-r--r--addressbook/backend/pas/pas-backend-ldap.c21
2 files changed, 29 insertions, 5 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index d29872a9c4..580c53d7a4 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,16 @@
+2001-10-29 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-backend-ldap.c (add_objectclass_mod): overload
+ this function for modifying objectclasses too, so we can make sure
+ evolutionPerson shows up in the objectclasses of an entry if it
+ shows up in the schema for the server.
+ (create_card_handler): add @replace = FALSE in the call to
+ add_objectclass_mod.
+ (modify_card_handler): call add_objectclass_mod with @replace =
+ TRUE.
+ (anniversary_compare): fix typo - return "equal", not "TRUE".
+ (birthday_compare): same.
+
2001-10-29 Jon Trowbridge <trow@ximian.com>
* conduit/address-conduit.c (pre_sync): Comment out spew.
diff --git a/addressbook/backend/pas/pas-backend-ldap.c b/addressbook/backend/pas/pas-backend-ldap.c
index 61144471e9..83e2b85971 100644
--- a/addressbook/backend/pas/pas-backend-ldap.c
+++ b/addressbook/backend/pas/pas-backend-ldap.c
@@ -750,12 +750,12 @@ build_mods_from_ecards (PASBackendLDAP *bl, ECardSimple *current, ECardSimple *n
}
static void
-add_objectclass_mod (PASBackendLDAP *bl, GPtrArray *mod_array)
+add_objectclass_mod (PASBackendLDAP *bl, GPtrArray *mod_array, gboolean modify)
{
LDAPMod *objectclass_mod;
objectclass_mod = g_new (LDAPMod, 1);
- objectclass_mod->mod_op = LDAP_MOD_ADD;
+ objectclass_mod->mod_op = modify ? LDAP_MOD_REPLACE : LDAP_MOD_ADD;
objectclass_mod->mod_type = g_strdup ("objectClass");
objectclass_mod->mod_values = g_new (char*, bl->priv->evolutionPersonSupported ? 6 : 5);
objectclass_mod->mod_values[0] = g_strdup (TOP);
@@ -824,7 +824,7 @@ create_card_handler (PASBackend *backend, LDAPOp *op)
g_ptr_array_remove (mod_array, NULL);
/* add our objectclass(es) */
- add_objectclass_mod (bl, mod_array);
+ add_objectclass_mod (bl, mod_array, FALSE);
/* then put the NULL back */
g_ptr_array_add (mod_array, NULL);
@@ -1088,6 +1088,17 @@ modify_card_handler (PASBackend *backend, LDAPOp *op)
/* build our mods */
mod_array = build_mods_from_ecards (bl, current_card, new_card, &need_new_dn);
if (mod_array->len > 0) {
+
+ /* remove the NULL at the end */
+ g_ptr_array_remove (mod_array, NULL);
+
+ /* add our objectclass(es), making sure
+ evolutionPerson is there if it's supported */
+ add_objectclass_mod (bl, mod_array, TRUE);
+
+ /* then put the NULL back */
+ g_ptr_array_add (mod_array, NULL);
+
ldap_mods = (LDAPMod**)mod_array->pdata;
/* actually perform the ldap modify */
@@ -1636,7 +1647,7 @@ anniversary_compare (ECardSimple *ecard1, ECardSimple *ecard2)
g_free (date1);
g_free (date2);
- return TRUE;
+ return equal;
}
static void
@@ -1703,7 +1714,7 @@ birthday_compare (ECardSimple *ecard1, ECardSimple *ecard2)
g_free (date1);
g_free (date2);
- return TRUE;
+ return equal;
}
#define IS_RFC2254_CHAR(c) ((c) == '*' || (c) =='\\' || (c) == '(' || (c) == ')' || (c) == '\0')