pkg://evolution-1.0.8-10.src.rpm:12267256/evolution-1.0.3-useproperldapattribs.patch
info downloads
Index: backend/pas/pas-backend-ldap.c
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/backend/pas/pas-backend-ldap.c,v
retrieving revision 1.82.2.11
diff -u -r1.82.2.11 pas-backend-ldap.c
--- addressbook/backend/pas/pas-backend-ldap.c 10 Mar 2002 01:31:26 -0000 1.82.2.11
+++ addressbook/backend/pas/pas-backend-ldap.c 3 Apr 2002 21:31:33 -0000
@@ -70,6 +70,7 @@
#define PERSON "person"
#define ORGANIZATIONALPERSON "organizationalPerson"
#define INETORGPERSON "inetOrgPerson"
+#define CALENTRY "calEntry"
#define EVOLUTIONPERSON "evolutionPerson"
static gchar *query_prop_to_ldap(gchar *query_prop);
@@ -96,6 +97,7 @@
/* whether or not there's support for the objectclass we need
to store all our additional fields */
gboolean evolutionPersonSupported;
+ gboolean calEntrySupported;
gboolean evolutionPersonChecked;
gboolean writable;
@@ -258,8 +260,8 @@
E_STRING_PROP (E_CARD_SIMPLE_FIELD_FILE_AS, "file_as", "fileAs"),
E_STRING_PROP (E_CARD_SIMPLE_FIELD_CATEGORIES, "categories", "categories"),
- E_STRING_PROP (E_CARD_SIMPLE_FIELD_CALURI, "caluri", "calendarURI"),
- E_STRING_PROP (E_CARD_SIMPLE_FIELD_FBURL, "fburl", "freeBusyURI")
+ STRING_PROP (E_CARD_SIMPLE_FIELD_CALURI, "caluri", "calCalURI"),
+ STRING_PROP (E_CARD_SIMPLE_FIELD_FBURL, "fburl", "calFBURL"),
/* E_CARD_SIMPLE_FIELD_NAME_OR_ORG, */
@@ -408,6 +410,11 @@
add_oc_attributes_to_supported_fields (bl, oc);
}
+ else if (!g_strcasecmp (oc->oc_names[j], CALENTRY)) {
+ g_print ("support found on ldap server for objectclass calEntry\n");
+ bl->priv->calEntrySupported = TRUE;
+ add_oc_attributes_to_supported_fields (bl, oc);
+ }
else if (!g_strcasecmp (oc->oc_names[j], INETORGPERSON)
|| !g_strcasecmp (oc->oc_names[j], ORGANIZATIONALPERSON)
|| !g_strcasecmp (oc->oc_names[j], PERSON)) {
@@ -810,57 +817,62 @@
static void
add_objectclass_mod (PASBackendLDAP *bl, GPtrArray *mod_array, GList *existing_objectclasses)
{
+#define FIND_INSERT(oc) \
+ if (!g_list_find_custom (existing_objectclasses, (oc), (GCompareFunc)g_strcasecmp)) \
+ g_ptr_array_add (objectclasses, g_strdup ((oc)))
+#define INSERT(oc) \
+ g_ptr_array_add (objectclasses, g_strdup ((oc)))
+
LDAPMod *objectclass_mod;
+ GPtrArray *objectclasses = g_ptr_array_new();
if (existing_objectclasses) {
- int i = 0;
-
objectclass_mod = g_new (LDAPMod, 1);
objectclass_mod->mod_op = LDAP_MOD_ADD;
objectclass_mod->mod_type = g_strdup ("objectClass");
- objectclass_mod->mod_values = g_new (char*, bl->priv->evolutionPersonSupported ? 6 : 5);
/* yes, this is a linear search for each of our
objectclasses, but really, how many objectclasses
are there going to be in any sane ldap entry? */
-#define FIND_INSERT(oc) \
- if (!g_list_find_custom (existing_objectclasses, (oc), (GCompareFunc)g_strcasecmp)) \
- objectclass_mod->mod_values[i++] = g_strdup ((oc));
-
FIND_INSERT (TOP);
FIND_INSERT (PERSON);
FIND_INSERT (ORGANIZATIONALPERSON);
FIND_INSERT (INETORGPERSON);
+ if (bl->priv->calEntrySupported)
+ FIND_INSERT (CALENTRY);
if (bl->priv->evolutionPersonSupported)
FIND_INSERT (EVOLUTIONPERSON);
- objectclass_mod->mod_values[i] = NULL;
- if (i) {
+ if (objectclasses->len) {
+ g_ptr_array_add (objectclasses, NULL);
+ objectclass_mod->mod_values = (char**)objectclasses->pdata;
g_ptr_array_add (mod_array, objectclass_mod);
+ g_ptr_array_free (objectclasses, FALSE);
}
else {
+ g_ptr_array_free (objectclasses, TRUE);
g_free (objectclass_mod->mod_type);
- g_free (objectclass_mod->mod_values);
g_free (objectclass_mod);
}
+
}
else {
objectclass_mod = g_new (LDAPMod, 1);
objectclass_mod->mod_op = 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);
- objectclass_mod->mod_values[1] = g_strdup (PERSON);
- objectclass_mod->mod_values[2] = g_strdup (ORGANIZATIONALPERSON);
- objectclass_mod->mod_values[3] = g_strdup (INETORGPERSON);
- if (bl->priv->evolutionPersonSupported) {
- objectclass_mod->mod_values[4] = g_strdup (EVOLUTIONPERSON);
- objectclass_mod->mod_values[5] = NULL;
- }
- else {
- objectclass_mod->mod_values[4] = NULL;
- }
+
+ INSERT(TOP);
+ INSERT(PERSON);
+ INSERT(ORGANIZATIONALPERSON);
+ INSERT(INETORGPERSON);
+ if (bl->priv->calEntrySupported)
+ INSERT(CALENTRY);
+ if (bl->priv->evolutionPersonSupported)
+ INSERT(EVOLUTIONPERSON);
+ g_ptr_array_add (objectclasses, NULL);
+ objectclass_mod->mod_values = (char**)objectclasses->pdata;
g_ptr_array_add (mod_array, objectclass_mod);
+ g_ptr_array_free (objectclasses, FALSE);
}
}
Index: backend/pas/evolutionperson.schema
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/backend/pas/evolutionperson.schema,v
retrieving revision 1.5.8.1
diff -u -r1.5.8.1 evolutionperson.schema
--- addressbook/backend/pas/evolutionperson.schema 6 Dec 2001 19:54:01 -0000 1.5.8.1
+++ addressbook/backend/pas/evolutionperson.schema 3 Apr 2002 21:31:33 -0000
@@ -167,12 +167,14 @@
SUP name
SINGLE-VALUE )
+# deprecated - use calEntry and its attributes from RFC 2739
attributetype ( 1.3.6.1.4.1.8506.1.2.26
NAME 'calendarURI'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
SINGLE-VALUE )
+# deprecated - use calEntry and its attributes from RFC 2739
attributetype ( 1.3.6.1.4.1.8506.1.2.27
NAME 'freeBusyURI'
EQUALITY caseExactIA5Match