evolution-data-server r9398 - trunk/camel



Author: sragavan
Date: Tue Aug 19 15:23:00 2008
New Revision: 9398
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=9398&view=rev

Log:
2008-08-19  Srinivasa Ragavan  <sragavan novell com>

	* camel/camel-filter-driver.c: Read XEV headers if there are any.


Modified:
   trunk/camel/ChangeLog
   trunk/camel/camel-filter-driver.c

Modified: trunk/camel/camel-filter-driver.c
==============================================================================
--- trunk/camel/camel-filter-driver.c	(original)
+++ trunk/camel/camel-filter-driver.c	Tue Aug 19 15:23:00 2008
@@ -1158,6 +1158,26 @@
 	g_hash_table_foreach_remove (p->only_once, (GHRFunc) run_only_once, &data);
 }
 
+
+static int
+decode_flags_from_xev(const char *xev, CamelMessageInfoBase *mi)
+{
+	guint32 uid, flags = 0;
+	char *header;
+
+	/* check for uid/flags */
+	header = camel_header_token_decode(xev);
+	if (!(header && strlen(header) == strlen("00000000-0000")
+	    && sscanf(header, "%08x-%04x", &uid, &flags) == 2)) {
+		g_free(header);
+		return 0;
+	}
+	g_free(header);
+
+	mi->flags = flags;
+	return 0;
+}
+
 /**
  * camel_filter_driver_filter_mbox:
  * @driver: CamelFilterDriver
@@ -1208,7 +1228,8 @@
 		CamelMessageInfo *info;
 		CamelMimeMessage *msg;
 		int pc = 0;
-		
+		const char *xev;
+	
 		if (st.st_size > 0)
 			pc = (int)(100.0 * ((double)camel_mime_parser_tell (mp) / (double)st.st_size));
 		
@@ -1223,6 +1244,11 @@
 		}
 
 		info = camel_message_info_new_from_header(NULL, ((CamelMimePart *)msg)->headers);
+		/* Try and see if it has X-Evolution headers */
+		xev = camel_header_raw_find(&((CamelMimePart *)msg)->headers, "X-Evolution", NULL);
+		if (xev)
+			decode_flags_from_xev (xev, (CamelMessageInfoBase *)info);
+
 		((CamelMessageInfoBase *)info)->size = camel_mime_parser_tell(mp) - last;
 
 		last = camel_mime_parser_tell(mp);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]