Filewatcher File Search
FTP Search
  
Directory (beta)
  
Content Search (beta)
   
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
Results 1 - 1
Help - FTP Sites List - Software Dir.
Searching half a billion files worldwide
© 1997-2008 Oliver Maruhn