rpms/evolution-rss/F-8 evolution-rss-0.0.7-autoreconf.patch, NONE, 1.1 evolution-rss-0.0.7-fix-detect.patch, NONE, 1.1 evolution-rss-0.0.7-libsoup-2.4.patch, NONE, 1.1 evolution-rss.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2

Lucian Langa (lucilanga) fedora-extras-commits at redhat.com
Tue Feb 19 08:14:02 UTC 2008


Author: lucilanga

Update of /cvs/pkgs/rpms/evolution-rss/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv7615/F-8

Modified Files:
	.cvsignore sources 
Added Files:
	evolution-rss-0.0.7-autoreconf.patch 
	evolution-rss-0.0.7-fix-detect.patch 
	evolution-rss-0.0.7-libsoup-2.4.patch evolution-rss.spec 
Log Message:

initial import


evolution-rss-0.0.7-autoreconf.patch:

--- NEW FILE evolution-rss-0.0.7-autoreconf.patch ---
--- evolution-rss-0.0.7/Makefile.am	2007-11-23 19:05:17.000000000 +0200
+++ /work/evolution/evolution-rss/Makefile.am	2008-02-13 08:02:25.000000000 +0200
@@ -1,10 +1,14 @@
 SUBDIRS = pixmaps po src
 
-## We dist autogen.sh since this is an example program
-## Real-world programs do not need to distribute autogen.sh
-## But there is no harm in it, and you probably should.
+ACLOCAL_AMFLAGS = -I m4
+
+INTLTOOL =                      \
+        intltool-extract.in     \
+        intltool-merge.in       \
+        intltool-update.in
 
 EXTRA_DIST = \
+	$(INTLTOOL)		\
 	autogen.sh		\
 	intltool-extract.in	\
 	intltool-merge.in	\

evolution-rss-0.0.7-fix-detect.patch:

--- NEW FILE evolution-rss-0.0.7-fix-detect.patch ---
diff -Naur evolution-rss-0.0.7/ChangeLog evolution-rss/ChangeLog
--- evolution-rss-0.0.7/ChangeLog	2007-12-12 14:50:40.000000000 -0500
+++ evolution-rss/ChangeLog	2007-12-23 11:25:53.000000000 -0500
@@ -1,3 +1,9 @@
+Tue 18 Dec 2007 09:38:56 PM EET <lucilanga at gnome.org>
+
+	* fix m4 support for evolution >= 2.11
+	* fix send and receive dialog crash for
+	 evolution  >= 2.12
+	
 Wed 12 Dec 2007 10:35:41 AM EET <lucilanga at gnome.org>
 
 	* prevend evolution-import-rss import empty
diff -Naur evolution-rss-0.0.7/configure.ac evolution-rss/configure.ac
--- evolution-rss-0.0.7/configure.ac	2007-12-12 14:50:31.000000000 -0500
+++ evolution-rss/configure.ac	2007-12-23 08:30:14.000000000 -0500
@@ -68,8 +68,8 @@
 AC_MSG_RESULT($EVOLUTION_VERSION)
 AC_SUBST(EVOLUTION_BASE_VERSION)
 AC_SUBST(EVOLUTION_EXEC_VERSION)
-if test "x$EVOLUTION_EXEC_VERSION" = "x2.12" || 
-   test	"x$EVOLUTION_EXEC_VERSION" = "x2.11"; then
+evolution_exec_int="$(echo "$EVOLUTION_EXEC_VERSION" | $AWK -F . '{print [$]1 * 10000 + [$]2 * 100 + [$]3}')"
+if test "$evolution_exec_int" -ge "21100"; then
 	AC_DEFINE_UNQUOTED(EVOLUTION_2_12,1, [evolution mail 2.12 present])
 	AC_SUBST(EVOLUTION_2_12)
 fi
diff -Naur evolution-rss-0.0.7/src/evolution-import-rss.c evolution-rss/src/evolution-import-rss.c
--- evolution-rss-0.0.7/src/evolution-import-rss.c	2007-12-12 14:08:44.000000000 -0500
+++ evolution-rss/src/evolution-import-rss.c	2007-12-23 08:30:12.000000000 -0500
@@ -183,8 +183,12 @@
 	
 
 	if (evo_running)
+	{
 		if (s)
         		send_dbus_message ("evolution_rss_feed", s);
+		else
+			g_print("Syntax: evolution-import-rss URL\n");
+	}
 	else
 	{
 		g_print("evolution repetably failed to start!\n");
diff -Naur evolution-rss-0.0.7/src/rss.c evolution-rss/src/rss.c
--- evolution-rss-0.0.7/src/rss.c	2007-12-13 13:50:03.000000000 -0500
+++ evolution-rss/src/rss.c	2007-12-23 10:33:42.000000000 -0500
@@ -3957,7 +3957,7 @@
         info = g_malloc0 (sizeof (*info));
 //        info->type = type;
                         
-        info->uri = "feed"; //g_stddup
+        info->uri = g_strdup("feed"); //g_stddup
 
         info->cancel = camel_operation_new (op_status, info);
         info->state = SEND_ACTIVE;

evolution-rss-0.0.7-libsoup-2.4.patch:

--- NEW FILE evolution-rss-0.0.7-libsoup-2.4.patch ---
--- evolution-rss-0.0.7/configure.ac	2008-02-10 18:50:24.000000000 +0200
+++ evolution-rss/trunk/configure.ac	2008-02-10 13:20:55.000000000 +0200
@@ -73,9 +73,23 @@
 	AC_DEFINE_UNQUOTED(EVOLUTION_2_12,1, [evolution mail 2.12 present])
 	AC_SUBST(EVOLUTION_2_12)
 fi
+AC_SUBST(evolution_exec_int)
+
 MINOR_VERSION=`echo $EVOLUTION_EXEC_VERSION|cut -d. -f2|awk '{print 1000 * $1}'`
 AC_SUBST(MINOR_VERSION)
 
+dnl locate libsoup flavour
+SOUP=
+PKG_CHECK_MODULES([LIBSOUP_24], libsoup-2.4, [SOUP=2.4], [SOUP=])
+if test "x$SOUP" != "x2.4"; then
+	PKG_CHECK_MODULES([LIBSOUP_22], libsoup-2.2, [SOUP=2.2], [SOUP=]) 
+fi
+if test "x$SOUP" == "x"; then
+	PKG_CHECK_MODULES(LIBSOUP, libsoup, [SOUP=], [])
+else
+SOUP="-$SOUP"
+fi
+
 dnl base packages and versions
 LIBGTK_REQUIRED=2.4.0
 LIBGNOME_REQUIRED=2.7.0
@@ -88,7 +102,7 @@
   [libgnome-2.0 >= $LIBGNOME_REQUIRED dnl
    libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED dnl
    gtk+-2.0 >= $LIBGTK_REQUIRED dnl
-   libsoup-2.2 >= $LIBSOUP_REQUIRED dnl
+   libsoup$SOUP >= $LIBSOUP_REQUIRED dnl
    evolution-plugin$EVOLUTION_BASE_VERSION_S >= $EVOLUTION_REQUIRED dnl
    libglade-2.0 dnl
 ])
@@ -235,6 +249,13 @@
 AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
 AM_GCONF_SOURCE_2
 
+dnl ********************
+dnl extract soup version
+dnl ********************
+SOUP_VERSION=`pkg-config --modversion libsoup$SOUP` 
+SOUP_VERSION=`echo $SOUP_VERSION|$AWK -F . '{print $1 * 1000000 + $2 * 1000 + $3}'`
+AC_SUBST(SOUP_VERSION)
+
 dnl ***********
 dnl D-BUS stuff
 dnl ***********
@@ -250,6 +271,7 @@
 fi
 AM_CONDITIONAL([HAVE_DBUS], [test x$have_dbus = xyes])
 
+
 dnl I18n stuff
 AC_PATH_PROG(GETTEXT, gettext, no)
 if test "x$GETTEXT" = "xno"; then
--- evolution-rss-0.0.7/src/network-soup.c	2007-12-11 22:27:00.000000000 +0200
+++ evolution-rss/trunk/src/network-soup.c	2008-02-10 13:20:53.000000000 +0200
@@ -1,5 +1,5 @@
 /*  Evolution RSS Reader Plugin
- *  Copyright (C) 2007  Lucian Langa <cooly at mips.edu.ms>
+ *  Copyright (C) 2007-2008  Lucian Langa <cooly at mips.edu.ms>
  *         
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -40,18 +40,31 @@
 } CallbackInfo;
 
 static void
+#if LIBSOUP_VERSION < 2003000
 got_chunk_blocking_cb(SoupMessage *msg, CallbackInfo *info) {
+#else
+got_chunk_blocking_cb(SoupMessage *msg, SoupBuffer *chunk, CallbackInfo *info) {
+#endif
     NetStatusProgress progress = {0};
     const char* clen;
 
     if (info->total == 0) {
+#if LIBSOUP_VERSION < 2003000
         clen = soup_message_get_header(msg->response_headers,
                 "Content-length");
+#else
+        clen = soup_message_headers_get(msg->response_headers,
+                "Content-length");
+#endif
         if (!clen)
             return;
         info->total = atoi(clen);
     }
+#if LIBSOUP_VERSION < 2003000
     info->current += msg->response.length;
+#else
+    info->current += chunk->length;
+#endif
 
     progress.current = info->current;
     progress.total = info->total;
@@ -59,18 +72,32 @@
 }
 
 static void
+#if LIBSOUP_VERSION < 2003000
 got_chunk_cb(SoupMessage *msg, CallbackInfo *info) {
+#else
+got_chunk_cb(SoupMessage *msg, SoupBuffer *chunk, CallbackInfo *info) {
+#endif
+
 	NetStatusProgress *progress = NULL;
 	const char* clen;
 	
 	if (info->total == 0) {
+#if LIBSOUP_VERSION < 2003000
 		clen = soup_message_get_header(msg->response_headers,
 				"Content-length");
+#else
+        	clen = soup_message_headers_get(msg->response_headers,
+				"Content-length");
+#endif
 		if (!clen)
 			return;
 		info->total = atoi(clen);
 	}
+#if LIBSOUP_VERSION < 2003000
 	info->current += msg->response.length;
+#else
+	info->current += chunk->length;
+#endif
 	progress = g_new0(NetStatusProgress, 1);
 
 	progress->current = info->current;
@@ -97,59 +124,92 @@
 recv_msg (SoupMessage *msg, gpointer user_data)
 {
 	GString *response = NULL;
+#if LIBSOUP_VERSION < 2003000
 	response = g_string_new_len(msg->response.body, msg->response.length);
+#else
+	response = g_string_new_len(msg->response_body->data, msg->response_body->length);
+#endif
 #ifdef RSS_DEBUG
 	g_print("got it!\n");
 	g_print("res:[%s]\n", response->str);
 #endif
 }
 
+static gboolean
+remove_if_match (gpointer key, gpointer value, gpointer user_data)
+{
+	if (value == user_data)
+	{
+		g_hash_table_remove(rf->key_session, key);
+		return TRUE;
+	}
+	else
+		return FALSE;
+}
+
+void
+construct_abort(gpointer key, gpointer value, gpointer user_data)
+{
+	g_hash_table_insert(rf->abort_session, key, value);
+}
+
 static void
 unblock_free (gpointer user_data, GObject *ex_msg)
 {
 #ifdef RSS_DEBUG
 	g_print("weak ref - trying to free object\n");
 #endif
+	g_hash_table_remove(rf->session, user_data);
+	g_hash_table_destroy(rf->abort_session);
+	rf->abort_session = g_hash_table_new(g_direct_hash, g_direct_equal);
+	g_hash_table_foreach(rf->session, construct_abort, NULL);
+	g_hash_table_find(rf->key_session,
+		remove_if_match,
+		user_data);
 	gboolean prune = soup_session_try_prune_connection (user_data);
 	//I really don't know if his is necesarry
 	//but I believe it won't hurt
 	if (prune)
 		g_object_unref(user_data);
-	g_hash_table_remove(rf->session, user_data);
 }
 
 //this will insert proxy in the session
 void
-proxyfy_session(SoupSession *session)
+proxify_session(SoupSession *session)
 {
 	gboolean use_proxy =
-        gconf_client_get_bool(rss_gconf, GCONF_KEY_USE_PROXY, NULL);
+       	gconf_client_get_bool(rss_gconf, GCONF_KEY_USE_PROXY, NULL);
     gint port_proxy =
         gconf_client_get_int(rss_gconf, GCONF_KEY_PORT_PROXY, NULL);
     gchar *host_proxy =
         gconf_client_get_string(rss_gconf, GCONF_KEY_HOST_PROXY, NULL);
-	gboolean auth_proxy =
+    gboolean auth_proxy =
         gconf_client_get_bool(rss_gconf, GCONF_KEY_AUTH_PROXY, NULL);
     gchar *user_proxy =
         gconf_client_get_string(rss_gconf, GCONF_KEY_USER_PROXY, NULL);
     gchar *pass_proxy =
         gconf_client_get_string(rss_gconf, GCONF_KEY_PASS_PROXY, NULL);
 
-
     if (use_proxy && host_proxy && port_proxy > 0)
     {
         gchar *proxy_uri = 
             g_strdup_printf("http://%s:%d/", host_proxy, port_proxy); 
 
+#if LIBSOUP_VERSION < 2003000
         SoupUri *puri = soup_uri_new (proxy_uri);
-		if (auth_proxy)
-		{
-			puri->user = g_strdup(user_proxy);
-			puri->passwd = g_strdup(pass_proxy);
-		}
-        g_object_set (G_OBJECT (session), SOUP_SESSION_PROXY_URI, puri, NULL);
+#else
+        SoupURI *puri = soup_uri_new (proxy_uri);
+#endif
+/*	if (auth_proxy)
+	{
+		puri->user = g_strdup(user_proxy);
+		puri->passwd = g_strdup(pass_proxy);
+	}*/
+       	g_object_set (G_OBJECT (session), SOUP_SESSION_PROXY_URI, puri, NULL);
+#if LIBSOUP_VERSION < 2003000
         if (puri)
             g_free(puri);
+#endif
         if (proxy_uri)
             g_free(proxy_uri);
     }
@@ -239,6 +299,7 @@
 }
 
 static void
+#if LIBSOUP_VERSION < 2003000
 authenticate (SoupSession *session,
         SoupMessage *msg,
         const char *auth_type,
@@ -246,26 +307,51 @@
         char **username,
         char **password,
         gpointer data)
+#else
+authenticate (SoupSession *session,
+	SoupMessage *msg,
+        SoupAuth *auth,
+	gboolean retrying,
+	gpointer data)
+#endif
 {
 	gchar *user = g_hash_table_lookup(rf->hruser, data);
 	gchar *pass = g_hash_table_lookup(rf->hrpass, data);
 	if (user && pass)
 	{
+#if LIBSOUP_VERSION < 2003000
 		*username = g_strdup(user);
 		*password = g_strdup(pass);
+#else
+	if (!retrying)
+		soup_auth_authenticate (auth, user, pass);
+#endif
 	}
 	else
 	{
+		if (rf->soup_auth_retry)
+		{
+		//means we're already tested once and probably
+		//won't try again
+		rf->soup_auth_retry = FALSE;
 		if (!read_up(data))
-			create_user_pass_dialog(data);
-
-		user = g_hash_table_lookup(rf->hruser, data);
-		pass = g_hash_table_lookup(rf->hrpass, data);
-		*username = g_strdup(user);
-		*password = g_strdup(pass);
+		{
+			if (create_user_pass_dialog(data))
+				rf->soup_auth_retry = FALSE;
+			else
+				rf->soup_auth_retry = TRUE;
+		}
+#if LIBSOUP_VERSION < 2003000
+		*username = g_strdup(g_hash_table_lookup(rf->hruser, data));
+		*password = g_strdup(g_hash_table_lookup(rf->hrpass, data));
+#else
+	if (!retrying)
+		soup_auth_authenticate (auth, user, pass);
+#endif
+		}
 	}
 }
-	
+
 static void
 reauthenticate (SoupSession *session,
         SoupMessage *msg,
@@ -275,9 +361,23 @@
         char **password,
         gpointer data)
 {
-		create_user_pass_dialog(data);
-        *username = g_strdup(g_hash_table_lookup(rf->hruser, data));
-        *password = g_strdup(g_hash_table_lookup(rf->hrpass, data));
+	gchar *user, *pass;
+	if (rf->soup_auth_retry)
+	{
+		//means we're already tested once and probably
+		//won't try again
+		rf->soup_auth_retry = FALSE;
+		if (create_user_pass_dialog(data))
+		{
+			rf->soup_auth_retry = FALSE;
+		}
+		else
+		{
+			rf->soup_auth_retry = TRUE;
+		}
+        	*username = g_strdup(g_hash_table_lookup(rf->hruser, data));
+        	*password = g_strdup(g_hash_table_lookup(rf->hrpass, data));
+	}
 }
 
 static int
@@ -287,6 +387,7 @@
   g_main_loop_quit (data);
 }
 
+
 gboolean
 net_get_unblocking(const char *url, NetStatusCallback cb, 
 				gpointer data, gpointer cb2,
@@ -299,7 +400,7 @@
 //		soup_session_async_new_with_options(SOUP_SESSION_TIMEOUT, SS_TIMEOUT, NULL);
 		soup_session_async_new();
 			
-//	proxyfy_session(soup_sess);
+	proxify_session(soup_sess);
 	info = g_new0(CallbackInfo, 1);
 	info->user_cb = cb;
 	info->user_data = data;
@@ -307,11 +408,17 @@
 	info->total = 0;
 	if (!rf->session)
 		rf->session = g_hash_table_new(g_direct_hash, g_direct_equal);
+	if (!rf->abort_session)
+		rf->abort_session = g_hash_table_new(g_direct_hash, g_direct_equal);
+	if (!rf->key_session)
+		rf->key_session = g_hash_table_new(g_direct_hash, g_direct_equal);
 
 	g_signal_connect (soup_sess, "authenticate",
             G_CALLBACK (authenticate), (gpointer)url);
+#if LIBSOUP_VERSION < 2003000
 	g_signal_connect (soup_sess, "reauthenticate",
             G_CALLBACK (reauthenticate), (gpointer)url);
+#endif
 
 	/* Queue an async HTTP request */
 	msg = soup_message_new ("GET", url);
@@ -319,17 +426,25 @@
 	{
 		g_set_error(err, NET_ERROR, NET_ERROR_GENERIC,
 				soup_status_get_phrase(2));			//invalid url
+		g_print("status:%s\n", soup_status_get_phrase(2));		//invalid url
 		return -1;
 	}
 	g_hash_table_insert(rf->session, soup_sess, msg);
+	g_hash_table_insert(rf->abort_session, soup_sess, msg);
+	g_hash_table_insert(rf->key_session, data, soup_sess);
 
 	gchar *agstr = g_strdup_printf("Evolution/%s; Evolution-RSS/%s",
-			EVOLUTION_VERSION, VERSION);
+			EVOLUTION_VERSION_STRING, VERSION);
+#if LIBSOUP_VERSION < 2003000
 	soup_message_add_header (msg->request_headers, "User-Agent",
                                 agstr);
+#else
+	soup_message_headers_append (msg->request_headers, "User-Agent",
+                                agstr);
+#endif
 	g_free(agstr);
 
-	g_signal_connect(G_OBJECT(msg), "got-chunk",
+	g_signal_connect(G_OBJECT(msg), "got_chunk",
 			G_CALLBACK(got_chunk_cb), info);	//FIXME Find a way to free this maybe weak_ref
 
 	soup_session_queue_message (soup_sess, msg,
@@ -337,6 +452,7 @@
 
 	g_object_add_weak_pointer (G_OBJECT(msg), (gpointer)info);
 	g_object_weak_ref (G_OBJECT(msg), unblock_free, soup_sess);
+//	g_object_weak_ref (G_OBJECT(soup_sess), unblock_free, soup_sess);
 //	GMainLoop *mainloop = g_main_loop_new (g_main_context_default (), FALSE);
   //	g_timeout_add (10 * 1000, &conn_mainloop_quit, mainloop);
 	return 1;
@@ -346,7 +462,11 @@
 net_post_blocking(const char *url, GSList *headers, GString *post,
                   NetStatusCallback cb, gpointer data,
                   GError **err) {
+#if LIBSOUP_VERSION < 2003000
 	SoupUri *suri = NULL;
+#else
+	SoupURI *suri = NULL;
+#endif
 	SoupMessage *req = NULL;
 	GString *response = NULL;
 	CallbackInfo info = { cb, data, 0, 0 };
@@ -360,8 +480,10 @@
 
 	g_signal_connect (soup_sess, "authenticate",
             G_CALLBACK (authenticate), soup_sess);
+#if LIBSOUP_VERSION < 2003000
 	g_signal_connect (soup_sess, "reauthenticate",
             G_CALLBACK (reauthenticate), soup_sess);
+#endif
 
 	suri = soup_uri_new(url);
 	if (!suri)
@@ -379,16 +501,25 @@
 		 * a bit. */
 		char *colonpos = strchr(header, ':');
 		*colonpos = 0;
+#if LIBSOUP_VERSION < 2003000
 		soup_message_add_header(req->request_headers, header, colonpos+1);
+#else
+		soup_message_headers_append(req->request_headers, header, colonpos+1);
+#endif
 		*colonpos = ':';
 	}
 	gchar *agstr = g_strdup_printf("Evolution/%s; Evolution-RSS/%s",
-			EVOLUTION_VERSION, VERSION);
+			EVOLUTION_VERSION_STRING, VERSION);
+#if LIBSOUP_VERSION < 2003000
 	soup_message_add_header (req->request_headers, "User-Agent",
                                 agstr);
+#else
+	soup_message_headers_append (req->request_headers, "User-Agent",
+                                agstr);
+#endif
 	g_free(agstr);
 
-	proxyfy_session(soup_sess);
+	proxify_session(soup_sess);
 	rf->b_session = soup_sess;
 	rf->b_msg_session = req;
 	soup_session_send_message(soup_sess, req);
@@ -403,7 +534,11 @@
 		goto out;
 	}
 
+#if LIBSOUP_VERSION < 2003000
 	response = g_string_new_len(req->response.body, req->response.length);
+#else
+	response = g_string_new_len(req->response_body->data, req->response_body->length);
+#endif
 
 out:
 	if (suri) soup_uri_free(suri);
--- evolution-rss-0.0.7/src/misc.c	2007-11-27 19:27:40.000000000 +0200
+++ evolution-rss/trunk/src/misc.c	2008-02-10 13:20:53.000000000 +0200
@@ -34,7 +34,7 @@
 static void
 print_hash(gpointer key, gpointer value, gpointer user_data)
 {
- 	g_print("key:%s, value:%s\n", key, value);
+ 	g_print("key:%p, value:%p\n", key, value);
 }
  
 static void
@@ -229,6 +229,128 @@
  	*f++ = 0;
          return g_strdup(res);
 }
+
+static void
+header_decode_lwsp(const char **in)
+{
+        const char *inptr = *in;
+        char c;
+
+
+        while ((camel_mime_is_lwsp(*inptr) || *inptr =='(') && *inptr != '\0') {
+                while (camel_mime_is_lwsp(*inptr) && *inptr != '\0') {
+                        inptr++;
+                }
+
+                /* check for comments */
+                if (*inptr == '(') {
+                        int depth = 1;
+                        inptr++;
+                        while (depth && (c=*inptr) && *inptr != '\0') {
+                                if (c=='\\' && inptr[1]) {
+                                        inptr++;
+                                } else if (c=='(') {
+                                        depth++;
+                                } else if (c==')') {
+                                        depth--;
+                                }
+                                inptr++;
+                        }
+                }
+        }
+        *in = inptr;
+}
+
+static char *
+decode_token (const char **in)
+{
+        const char *inptr = *in;
+        const char *start;
+
+        header_decode_lwsp (&inptr);
+        start = inptr;
+        while (camel_mime_is_ttoken (*inptr))
+                inptr++;
+        if (inptr > start) {
+                *in = inptr;
+                return g_strndup (start, inptr - start);
+        } else {
+                return NULL;
+        }
+}
+
+/* hrm, is there a library for this shit? */
+static struct {
+        char *name;
+        int offset;
+} tz_offsets [] = {
+        { "UT", 0 },
+        { "GMT", 0 },
+        { "EST", -500 },        /* these are all US timezones.  bloody yanks */
+        { "EDT", -400 },
+        { "CST", -600 },
+        { "CDT", -500 },
+        { "MST", -700 },
+        { "MDT", -600 },
+        { "PST", -800 },
+        { "PDT", -700 },
+        { "Z", 0 },
+        { "A", -100 },
+        { "M", -1200 },
+        { "N", 100 },
+        { "Y", 1200 },
+};
+
+static const char tz_months [][4] = {
+        "Jan", "Feb", "Mar", "Apr", "May", "Jun",
+        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
+};
+
+static const char tz_days [][4] = {
+        "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+};
+
+gboolean
+is_rfc822(char *in)
+{
+	const char *inptr = in;
+	struct tm tm;
+	guint i;
+
+        header_decode_lwsp (&inptr);
+        char *day =  decode_token(&inptr);
+        if (day)
+        {
+		g_free (day);
+                header_decode_lwsp (&inptr);
+                if (*inptr == ',')
+                        inptr++;
+                else
+                        goto notrfc;
+	}
+        tm.tm_mday = camel_header_decode_int(&inptr);
+        if (tm.tm_mday == 0)
+                goto notrfc;
+
+        char *monthname = decode_token(&inptr);
+        gboolean foundmonth = FALSE;
+        if (monthname) {
+                for (i=0;i<sizeof(tz_months)/sizeof(tz_months[0]);i++) {
+                if (!g_ascii_strcasecmp(tz_months[i], monthname)) {
+                               tm.tm_mon = i;
+                               foundmonth = TRUE;
+                               break;
+                         }
+        	}
+                        g_free(monthname);
+	}
+        if (!foundmonth)
+                goto notrfc;
+
+	return 1;
+
+notrfc:	return 0;
+}
  
 #endif
 
--- evolution-rss-0.0.7/src/Makefile.am	2007-12-12 20:17:36.000000000 +0200
+++ evolution-rss/trunk/src/Makefile.am	2008-02-10 13:20:53.000000000 +0200
@@ -7,9 +7,11 @@
 	$(DBUS_CFLAGS)						\
 	-DGETTEXT_PACKAGE="\"$(GETTEXT_PACKAGE)\""		\
 	-DLOCALEDIR="\"$(LOCALEDIR)\""				\
-	-DEVOLUTION_VERSION=\"$(EVOLUTION_EXEC_VERSION)\"    	\
+	-DEVOLUTION_VERSION_STRING=\"$(EVOLUTION_EXEC_VERSION)\"\
+	-DEVOLUTION_VERSION=$(evolution_exec_int)		\
 	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"            	\
 	-DEVOLUTION_ICONDIR=\""$(ICON_DIR)"\"            	\
+	-DLIBSOUP_VERSION="$(SOUP_VERSION)"	            	\
 	-DGECKO_HOME=\""$(GECKO_HOME)"\"			\
 	-DRENDER=\""$(RENDER)"\"				\
 	-DRENDER_N=$(RENDER_N)					\
@@ -42,7 +44,7 @@
 	-e "s%+GETTEXT_PACKAGE+%$(GETTEXT_PACKAGE)%" \
 	-e "s%+LOCALEDIR+%$(LOCALEDIR)%" \
 	-e "s%+VERSION+%$(VERSION)%" \
-	-e "s%+URL+%http://mapes/evo/index.php/Evolution_RSS_Reader_Plugin%" \
+	-e "s%+URL+%http://mips.edu.ms/evo/index.php/Evolution_RSS_Reader_Plugin%" \
 	$< > $@
 
 %.error.in: %.error.xml
--- evolution-rss-0.0.7/src/rss.h	2007-12-08 17:56:11.000000000 +0200
+++ evolution-rss/trunk/src/rss.h	2008-02-10 20:13:12.000000000 +0200
@@ -53,6 +53,7 @@
         GHashTable      *hrh;   		//fetch html flag
         GHashTable      *hruser;   		//auth user hash
         GHashTable      *hrpass;   		//auth user hash
+	gboolean	soup_auth_retry;	//wether to retry auth after an unsucessful auth
         GHashTable      *hrdel_feed;   		//option to delete messages in current feed
         GHashTable      *hrdel_days;   		//option to delete messages older then days
         GHashTable      *hrdel_messages; 	//option to keep last messages
@@ -82,6 +83,9 @@
 	guint		feed_queue;
         gboolean        cancel; 		//cancelation signal
         GHashTable      *session;		//queue of active unblocking sessions
+        GHashTable      *abort_session;		//this is a hack to be able to iterate when
+						//we remove keys from seesion with weak_ref
+        GHashTable      *key_session;		//queue of active unblocking sessions and keys linked
         SoupSession     *b_session;		//active blocking session
         SoupMessage     *b_msg_session;		//message running in the blocking session
 	guint		rc_id;
@@ -95,6 +99,8 @@
 	gchar		*main_folder;		// "News&Blogs" folder name
 	GHashTable	*feed_folders;		// defined feeds folders
 	GHashTable	*reversed_feed_folders;	// easyer when we lookup for the value
+	GHashTable	*activity;
+	GHashTable	*error_hash;
 	guint		test;
 #if HAVE_DBUS
 	DBusConnection	*bus;			// DBUS
@@ -224,7 +230,7 @@
 } create_feed;
 
 u_int32_t gen_crc(const char *msg);
-void create_user_pass_dialog(gchar *url);
+gboolean create_user_pass_dialog(gchar *url);
 static void start_check_cb (GtkWidget *widget, gpointer data);
 static void err_destroy (GtkWidget *widget, gpointer data);
 static gboolean check_if_match (gpointer key, gpointer value, gpointer user_data);
--- evolution-rss-0.0.7/src/rss.c	2008-02-10 18:50:24.000000000 +0200
+++ evolution-rss/trunk/src/rss.c	2008-02-10 13:20:53.000000000 +0200
@@ -91,7 +96,9 @@
 #include <errno.h>
 
 #include <libsoup/soup.h>
+#if LIBSOUP_VERSION < 2003000
 #include <libsoup/soup-message-queue.h>
+#endif
 
 #include "rss.h"
 #include "network-soup.c"
@@ -145,8 +162,8 @@
 guint count = 0;
 gchar *buffer = NULL;
 
-#define RSS_CONTROL_ID  "OAFIID:GNOME_Evolution_RSS:" EVOLUTION_VERSION
-#define FACTORY_ID      "OAFIID:GNOME_Evolution_RSS_Factory:" EVOLUTION_VERSION
+#define RSS_CONTROL_ID  "OAFIID:GNOME_Evolution_RSS:" EVOLUTION_VERSION_STRING
+#define FACTORY_ID      "OAFIID:GNOME_Evolution_RSS_Factory:" EVOLUTION_VERSION_STRING
 
 guint           upgrade = 0;                // set to 2 when initailization successfull
 
@@ -336,7 +541,7 @@
     }*/
 }
 
-void
+gboolean
 create_user_pass_dialog(gchar *url)
 {
 GtkWidget *dialog1;
@@ -351,6 +556,7 @@
   GtkWidget *okbutton1;
   GtkWidget *checkbutton1;
   GtkWidget *vbox1;
+  guint resp;
 
   if (!rf->hruser)
         rf->hruser = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
@@ -400,6 +606,7 @@
                     (GtkAttachOptions) (0), 0, 0);
   gtk_entry_set_invisible_char (GTK_ENTRY (username), 8226);
     gchar *user = g_hash_table_lookup(rf->hruser,  url);
+	g_print("user:%s\n", user);
     if (user)
         gtk_entry_set_text (GTK_ENTRY (username), user);
   password = gtk_entry_new ();
@@ -441,21 +648,26 @@
     case GTK_RESPONSE_OK:
         if (user)
             g_hash_table_remove(rf->hruser, url);
-        g_hash_table_insert(rf->hruser, url, g_strdup(gtk_entry_get_text (GTK_ENTRY (username))));
+        g_hash_table_insert(rf->hruser, url, 
+		g_strdup(gtk_entry_get_text (GTK_ENTRY (username))));
         if (pass)
             g_hash_table_remove(rf->hrpass, url);
-        g_hash_table_insert(rf->hrpass, url, g_strdup(gtk_entry_get_text (GTK_ENTRY (password))));
+        g_hash_table_insert(rf->hrpass, url, 
+		g_strdup(gtk_entry_get_text (GTK_ENTRY (password))));
 	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton1)))
 		save_up(url);
 	else
 		del_up(url);
 	
         gtk_widget_destroy (dialog1);
+	resp = 0;
         break;
     default:
         gtk_widget_destroy (dialog1);
+	resp = 1;
         break;
   }
+	return resp;
 }
 
 add_feed *
@@ -756,24 +968,47 @@
       		-1);
 }
 
-void
+gboolean
 cancel_soup_sess(gpointer key, gpointer value, gpointer user_data)
 {
-	if (SOUP_IS_MESSAGE(value))
+	g_print("key:%p, value:%p ==", key, value);
+
+	if (SOUP_IS_SESSION(key))
 	{
-		soup_message_set_status(value,  SOUP_STATUS_CANCELLED);
-		soup_session_cancel_message(key, value);
+		if (SOUP_IS_MESSAGE(value))
+		{
+#if LIBSOUP_VERSION < 2003000
+			soup_message_set_status(value,  SOUP_STATUS_CANCELLED);
+			soup_session_cancel_message(key, value);
+#else
+			soup_session_cancel_message(key, value, SOUP_STATUS_CANCELLED);
+#endif
+		}
+		soup_session_abort(key);
+		g_hash_table_find(rf->key_session,
+                	remove_if_match,
+                	user_data);
 	}
-	soup_session_abort(key);
-	g_hash_table_remove(rf->session, key);
+	g_print(" key:%p, value:%p\n", key, value);
+	return TRUE;
+}
+void
+remove_weak(gpointer key, gpointer value, gpointer user_data)
+{
+	g_object_weak_unref(value, unblock_free, key);
 }
 
 void
 abort_all_soup(void)
 {
 	//abort all session
-	if (rf->session)
-		g_hash_table_foreach(rf->session, cancel_soup_sess, NULL);
+	if (rf->abort_session)
+	{
+		g_hash_table_foreach(rf->abort_session, remove_weak, NULL);
+		g_hash_table_foreach_remove(rf->abort_session, cancel_soup_sess, NULL);
+		g_hash_table_destroy(rf->session);
+                rf->session = g_hash_table_new(g_direct_hash, g_direct_equal);
+	}
 	if (rf->progress_bar)
 	{
 		gtk_progress_bar_set_fraction((GtkProgressBar *)rf->progress_bar, 1);
@@ -783,8 +1018,12 @@
 	{
 		if (SOUP_IS_MESSAGE(rf->b_msg_session))
 		{
+#if LIBSOUP_VERSION < 2003000
 			soup_message_set_status(rf->b_msg_session, SOUP_STATUS_CANCELLED);
 			soup_session_cancel_message(rf->b_session, rf->b_msg_session);
+#else
+			soup_session_cancel_message(rf->b_session, rf->b_msg_session, SOUP_STATUS_CANCELLED);
+#endif
 		}
 		soup_session_abort(rf->b_session);
 		rf->b_session = NULL;
@@ -2326,9 +2588,17 @@
 html_set_base(xmlNode *doc, char *base, char *tag, char *prop, char *basehref)
 {
 	gchar *url;
+#if LIBSOUP_VERSION < 2003000
 	SoupUri *newuri;
+#else
+	SoupURI *newuri;
+#endif
         gchar *newuristr;
+#if LIBSOUP_VERSION < 2003000
         SoupUri *base_uri = soup_uri_new (base);
+#else
+        SoupURI *base_uri = soup_uri_new (base);
+#endif
 	while (doc = html_find((xmlNode *)doc, tag))
 	{
 		if (url = xmlGetProp(doc, prop))
@@ -2364,7 +2634,11 @@
 				// all relative links
 				if (basehref != NULL)
 				{
+#if LIBSOUP_VERSION < 2003000
         				SoupUri *newbase_uri = soup_uri_new (basehref);
+#else
+        				SoupURI *newbase_uri = soup_uri_new (basehref);
+#endif
         				newuri = soup_uri_new_with_base (newbase_uri, url);
 					soup_uri_free(newbase_uri);
 				}
@@ -2431,7 +2705,9 @@
         ctxt->vctxt.error = my_xml_parser_error_handler;
         ctxt->vctxt.warning = my_xml_parser_error_handler;
 
-	xmlCtxtUseOptions(ctxt, XML_PARSE_DTDLOAD| XML_PARSE_NOENT);
+	xmlCtxtUseOptions(ctxt, XML_PARSE_DTDLOAD
+				| XML_PARSE_NOENT
+				| XML_PARSE_NOCDATA);
 
         xmlParseDocument (ctxt);
 
@@ -2619,7 +2895,7 @@
 {
 //	GtkAdjustment *a = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(widget));
 //	g_print("page size:%d\n", a->page_size);
-//	g_print("value size:%d\n", a->value);
+	g_print("mycall()\n");
 	int width;
         GtkRequisition req;
   //      EMFormatHTMLDisplay *efhd = (EMFormatHTMLDisplay *) efh;
@@ -2636,6 +2912,7 @@
 	{
         	width = widget->allocation.width - 16 - 2;// - 16;
         	int height = widget->allocation.height - 16 - k;
+		g_print("resize webkit :width:%d, height: %d\n", width, height);
 #ifdef RSS_DEBUG
 		g_print("resize webkit :width:%d, height: %d\n", width, height);
 #endif
@@ -2652,14 +2929,26 @@
 //	g_print("size:%d\n", wheight);
 //        height = req.height - 200;// - 16 - 194;
 //	g_print("my cal %d w:%d h:%d\n", GTK_IS_WIDGET(data), width, height);
-       		if (GTK_IS_WIDGET(data) && height > 50)
+		g_print("data:%p\n", data);
+		g_print("is_widget:%d\n", GTK_IS_WIDGET(widget));
+		g_print("is_data:%p\n", data);
+		g_print("is_is_data:%d\n", GTK_IS_WIDGET(gtk_bin_get_child(data)));
+		g_print("is_is_data:%d\n", GTK_IS_WIDGET(data));
+//		if (GTK_IS_MOZ_EMBED(data))
+//		{
+//			g_print("is mozembed\n");
+       		if (data && GTK_IS_WIDGET(data) && height > 50)
+		{
 			gtk_widget_set_size_request((GtkWidget *)data, width, height);
 // apparently resizing gtkmozembed widget won't redraw if using xulrunner
 // there is no point in reload for the rest
 #ifdef HAVE_XULRUNNER
-		gtk_moz_embed_reload(rf->mozembed, GTK_MOZ_EMBED_FLAG_RELOADNORMAL);
+			gtk_moz_embed_reload(rf->mozembed, GTK_MOZ_EMBED_FLAG_RELOADNORMAL);
 #endif
+		}
+//		}
 	}
+	g_print("resize done\n");
 }
 
 #ifdef HAVE_GTKMOZEMBED
@@ -2776,6 +3065,7 @@
 //	gtk_box_pack_start (GTK_BOX (w), gpage, TRUE, TRUE, 0);
 	gtk_widget_show_all(moz);
         gtk_container_add ((GtkContainer *) eb, moz);
+        gtk_container_check_resize ((GtkContainer *) eb);
 	g_print("add\n");
 //	gtk_widget_set_size_request((GtkWidget *)rf->mozembed, 330, 330);
 //        gtk_container_add ((GtkContainer *) eb, rf->mozembed);
@@ -2874,6 +3164,7 @@
 		gtk_moz_embed_stop_load(GTK_MOZ_EMBED(rf->mozembed));
 //		gtk_moz_embed_pop_startup();
 #endif
+	g_signal_stop_emission_by_name(po->format->html, "size_allocate");
 	if (rf->mozembed)
 	{
 		g_print("call pfree() for controls2\n");
@@ -2957,6 +3248,7 @@
 		pobj = (struct _org_gnome_rss_controls_pobject *) em_format_html_add_pobject ((EMFormatHTML *) t->format, sizeof(*pobj), classid, message, (EMFormatHTMLPObjectFunc)org_gnome_rss_controls2);
 		pobj->website = g_strstrip(g_strdup((gchar *)website));
 		pobj->is_html = GPOINTER_TO_INT(is_html);
+		pobj->format = (EMFormatHTML *)t->format;
 		pobj->object.free = pfree;
         	camel_stream_printf (t->stream, "<table><tr><td width=100%% valign=top><object classid=%s></object></td></tr></table>\n", classid);
 		goto out;
@@ -2974,14 +3266,21 @@
     			camel_stream_printf (t->stream, "</tr></table></td></tr></table>");
                 	goto out;
         	}
-		xmlDoc *doc = parse_html(addr, content->str, content->len);
-		if (doc)
+
+		inlen = content->len;
+		utf8len = 5*inlen+1;
+		buffer2 = g_malloc(utf8len);
+		UTF8ToHtml(buffer2, &utf8len, content->str, &inlen);
+		xmlDoc *src = (xmlDoc *)parse_html(addr, buffer2, strlen(buffer2));
+
+		if (src)
 		{
-			htmlDocDumpMemory(doc, &buff, &size);
+			htmlDocDumpMemory(src, &buff, &size);
 #ifdef RSS_DEBUG
 			g_print("%s\n", buff);
 #endif
-			xmlFree(doc);
+			g_print("%s\n", buff);
+			xmlFree(src);
 		}
 		else
 			goto out;
@@ -3099,11 +3398,34 @@
 gchar *
 generate_safe_chn_name(gchar *chn_name)
 {
-	guint i = 1;
+	guint i = 0;
+	gchar *c;
+	gchar *stmp;
 	while (check_chn_name(chn_name))
 	{
+		GString *result = g_string_new (NULL);
 		gchar *tmp = chn_name;
-		chn_name = g_strdup_printf("%s #%d", tmp, i++);
+		if (c = strrchr(tmp, '#'))
+		{
+			if (isdigit(*(c+1)))
+			{
+				stmp = g_strndup(tmp, c - tmp);
+				while (isdigit(*(c+1)))
+				{
+					g_string_append_c(result, *(c+1));
+					c++;
+				}
+				i = atoi(result->str);
+				chn_name = g_strdup_printf("%s#%d", stmp, i+1);
+				g_free(stmp);
+			}
+			else
+				chn_name = g_strdup_printf("%s #%d", tmp, i+1);
+		}
+		else
+			chn_name = g_strdup_printf("%s #%d", tmp, i+1);
+		memset(result->str, 0, result->len);
+		g_string_free (result, TRUE);
 		g_free(tmp);
 	}
 	return chn_name;
@@ -3293,7 +3617,11 @@
 }
 
 void
+#if LIBSOUP_VERSION < 2003000
 finish_feed (SoupMessage *msg, gpointer user_data)
+#else
+finish_feed (SoupSession *soup_sess, SoupMessage *msg, gpointer user_data)
+#endif
 {
 	GError *err = NULL;
 	gchar *chn_name = NULL;
@@ -3365,14 +3702,22 @@
 		goto out;
 	}
 	
+#if LIBSOUP_VERSION < 2003000
 	if (!msg->response.length)
+#else
+	if (!msg->response_body->length)
+#endif
 		goto out;
 
 	if (msg->status_code == SOUP_STATUS_CANCELLED)
 		goto out;
 
 
+#if LIBSOUP_VERSION < 2003000
 	GString *response = g_string_new_len(msg->response.body, msg->response.length);
+#else
+	GString *response = g_string_new_len(msg->response_body->data, msg->response_body->length);
+#endif
 //#ifdef RSS_DEBUG
 	g_print("feed %s\n", user_data);
 //#endif
@@ -3393,19 +3738,24 @@
 		if (!user_data || !lookup_key(user_data))
 			goto out;
 		r->uri =  g_hash_table_lookup(rf->hr, lookup_key(user_data));
+	
         	chn_name = display_doc (r);
 
-		if (g_ascii_strcasecmp(user_data, chn_name) != 0)
-		{
-			gchar *md5 = g_strdup(g_hash_table_lookup(rf->hrname, user_data));
-			g_hash_table_remove(rf->hrname_r, md5);
-			g_hash_table_remove(rf->hrname, user_data);
-			g_hash_table_insert(rf->hrname, g_strdup(chn_name), md5);
-			g_hash_table_insert(rf->hrname_r, g_strdup(md5), g_strdup(chn_name));
-			save_gconf_feed();
-		}
 		if (chn_name)
+		{
+			if (g_ascii_strcasecmp(user_data, chn_name) != 0)
+			{
+				gchar *md5 = g_strdup(
+					g_hash_table_lookup(rf->hrname, user_data));
+				g_hash_table_remove(rf->hrname_r, md5);
+				g_hash_table_remove(rf->hrname, user_data);
+				g_hash_table_insert(rf->hrname, g_strdup(chn_name), md5);
+				g_hash_table_insert(rf->hrname_r, g_strdup(md5), 
+								g_strdup(chn_name));
+				save_gconf_feed();
+			}
 			g_free(chn_name);
+		}
 		if (r->cache)
 			xmlFreeDoc(r->cache);
 		if (r->type)
@@ -3865,7 +4239,7 @@
 #if GTK_2_6
 	gtk_label_set_ellipsize (GTK_LABEL (label2), PANGO_ELLIPSIZE_START);
 #endif
-	gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_CENTER);
+	gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_FILL);
         readrss_label = gtk_label_new(_("Please wait"));
         if (!rf->progress_dialog)
         {
@@ -4120,6 +4494,7 @@
 			rf->rc_id = 0;
 			rf->feed_queue = 0;
 			rf->main_folder = get_main_folder();
+			rf->soup_auth_retry = 1;
 			get_feed_folders();
 #if HAVE_DBUS
 			g_print("init_dbus()\n");
@@ -4138,13 +4513,13 @@
 			if (!render) 	// set render just in case it was forced in configure
 			{
 				render = RENDER_N;
-  				gconf_client_set_int(rss_gconf, GCONF_KEY_HTML_RENDER, render, NULL);
+  				gconf_client_set_int(rss_gconf, 
+						GCONF_KEY_HTML_RENDER, render, NULL);
 			}
 #ifdef HAVE_GTKMOZEMBED
 			if (2 == render)
 				rss_mozilla_init();
 #endif
-		g_print("called\n");
 		}
 		upgrade = 2;
 	} else {
@@ -4166,6 +4541,7 @@
 	CamelMimeMessage *new = camel_mime_message_new();
 	CamelInternetAddress *addr;
 	CamelMessageInfo *info;
+	CamelException *ex;
 	struct tm tm;
 	time_t time;
 	CamelDataWrapper *rtext;
@@ -4198,9 +4574,15 @@
 	//handle pubdate
 	if (CF->date)
 	{
-		time_t actual_time;
-		actual_time = camel_header_decode_date(CF->date, &offset);
-		camel_mime_message_set_date(new, actual_time, offset);
+		//check if CF->date obeys rfc822
+		if (!is_rfc822(CF->date))
+			camel_mime_message_set_date(new, CAMEL_MESSAGE_DATE_CURRENT, 0);
+		else
+		{	
+			time_t actual_time;
+			actual_time = camel_header_decode_date(CF->date, &offset);
+			camel_mime_message_set_date(new, actual_time, offset);
+		}
 	}
 	else 
 	{
@@ -4762,7 +5146,11 @@
 }
 
 static void
+#if LIBSOUP_VERSION < 2003000
 finish_enclosure (SoupMessage *msg, create_feed *user_data)
+#else
+finish_enclosure (SoupSession *soup_sess, SoupMessage *msg, create_feed *user_data)
+#endif
 {
 	gchar *tmpdir = NULL;
 	gchar *name = NULL;
@@ -4775,7 +5163,11 @@
 	f = fopen(name, "wb+");
 	if (f)
 	{
+#if LIBSOUP_VERSION < 2003000
 		fwrite(msg->response.body, msg->response.length, 1, f);
+#else
+		fwrite(msg->response_body->data, msg->response_body->length, 1, f);
+#endif
 		fclose(f);
 		//replace encl with filename generated
 		g_free(user_data->encl);
@@ -5155,6 +5547,7 @@
 #ifdef RSS_DEBUG
 	g_print("Cleaning folder: %s\n", real_folder);
 #endif
+
         gchar *real_name = g_strdup_printf("%s/%s", lookup_main_folder(), real_folder);
 	if (!(folder = camel_store_get_folder (store, real_name, 0, NULL)))
                         goto fail;
@@ -5622,6 +6015,12 @@
 					renderer,
 					set_sensitive,
 					NULL, NULL);
+
+#if !defined(HAVE_GTKMOZEMBED) && !defined (HAVE_WEBKIT)
+	GtkWidget *label_webkit = glade_xml_get_widget(sf->gui, "label_webkits");
+	gtk_label_set_text(label_webkit, _("Note: In order to be able to use Mozilla (Firefox) or Apple Webkit \nas renders you need firefox or webkit devel package \ninstalled and evolution-rss should be recompiled to see those packages."));
+	gtk_widget_show(label_webkit);
+#endif
 	g_signal_connect (combo, "changed", G_CALLBACK (render_engine_changed), NULL);
 	g_signal_connect (combo, "value-changed", G_CALLBACK (render_engine_changed), NULL);
 	gtk_widget_show(combo);
--- evolution-rss-0.0.7/ChangeLog	2008-02-10 18:50:24.000000000 +0200
+++ evolution-rss/trunk/ChangeLog	2008-02-10 20:57:37.000000000 +0200
@@ -1,3 +1,14 @@
+Sun 10 Feb 2008 08:51:04 PM EET <lucilanga at gnome.org>
+
+	* backporting evolution-rss-0.0.7 to
+	libsoup-2.4
+	* fix generation safe channel name
+	* fix gtkhtml UTF8 rendering
+	* fix xml parsing nocdata
+	* fix proxy options that were ignored
+	* fix authentication window
+	* checks for date to obey rfc822
+	
 Tue 18 Dec 2007 09:38:56 PM EET <lucilanga at gnome.org>
 
 	* fix m4 support for evolution >= 2.11


--- NEW FILE evolution-rss.spec ---
Summary: Evolution RSS Reader
Name: evolution-rss
Version: 0.0.7
Release: 8%{?dist}
Group: Applications/Internet
License: GPLv2 and GPLv2+
Source: http://gnome.eu.org/%{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
URL: http://gnome.eu.org/evo/index.php/Evolution_RSS_Reader_Plugin
Patch0: evolution-rss-0.0.7-fix-detect.patch
Patch1: evolution-rss-0.0.7-libsoup-2.4.patch
Patch2: evolution-rss-0.0.7-autoreconf.patch
Requires: evolution

Requires(pre): GConf2
Requires(post): GConf2
Requires(preun): GConf2

BuildRequires: gettext
BuildRequires: evolution-devel
BuildRequires: evolution-data-server-devel 
BuildRequires: dbus-glib-devel
#BuildRequires: gecko-devel
BuildRequires: perl(XML::Parser)
BuildRequires: libtool

%description
This is an evolution plugin which enables evolution to read rss feeds.

%prep
%setup -q -n evolution-rss-%{version}
%patch0 -p1 -b fixdetect
%patch1 -p1 -b libsoup24
%patch2 -p1 -b autoreconf

%build
autoreconf -i -f
%configure --disable-webkit --disable-gecko
make %{?_smp_mflags}

%install
rm -rf %{buildroot}
export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
make install DESTDIR="%{buildroot}" INSTALL="install -p"
find %{buildroot} -name \*\.la -print | xargs rm -f
%find_lang %{name}

%clean
rm -rf %{buildroot}

%pre
if [ "$1" -gt 1 ]; then
	export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
	gconftool-2 --makefile-uninstall-rule \
		%{_sysconfdir}/gconf/schemas/%{name}.schemas >/dev/null || :
fi

%post
export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
gconftool-2 --makefile-install-rule \
	%{_sysconfdir}/gconf/schemas/%{name}.schemas > /dev/null || :
/sbin/ldconfig

%preun
if [ "$1" -eq 0 ]; then
	export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
	gconftool-2 --makefile-uninstall-rule \
		%{_sysconfdir}/gconf/schemas/%{name}.schemas > /dev/null || :
fi

%postun -p /sbin/ldconfig

%files -f %{name}.lang
%defattr(-,root,root,-)
# Only the following binary is under GPLv2. Other
# parts are under GPLv2+.
%{_bindir}/evolution-import-rss
%{_sysconfdir}/gconf/schemas/%{name}.schemas
%{_datadir}/evolution/*/errors/org-gnome-evolution-rss.error
%{_datadir}/evolution/*/glade/rss-ui.glade
%{_datadir}/evolution/*/images/rss.png
%{_libdir}/evolution/*/plugins/org-gnome-evolution-rss.eplug
%{_libdir}/evolution/*/plugins/org-gnome-evolution-rss.xml
%{_libdir}/evolution/*/plugins/liborg-gnome-evolution-rss.so
%{_libdir}/bonobo/servers/GNOME_Evolution_RSS_*.server
%doc AUTHORS
%doc COPYING
%doc ChangeLog
%doc FAQ
%doc NEWS
%doc README
%doc TODO

%changelog
* Tue Feb 19 2008 Lucian Langa <cooly at gnome.eu.org> - 0.0.7-8
-Misc cleanups

* Sat Feb 17 2008 Lucian Langa <cooly at gnome.eu.org> - 0.0.7-7
- Misc cleanup

* Sat Feb 16 2008 Lucian Langa <cooly at gnome.eu.org> - 0.0.7-6
- Drop gecko requirements till xulrunner is fixed

* Tue Feb 12 2008 Lucian Langa <lucilanga at gnome.org> - 0.0.7-5
- buildroot fixes

* Wed Feb 06 2008 Lucian Langa <lucilanga at gnome.org> - 0.0.7-4
- Modified firefox-devel requirement for build

* Wed Jan 30 2008 Lucian Langa <lucilanga at gnome.org> - 0.0.7-1
- Updates and sanitize

* Thu Jan 24 2008 Lucian Langa <lucilanga at gnome.org> - 0.0.7-1
- Fixed rpmlint warnings
- Updated to Fedora Packaging Guidelines

* Thu Nov 22 2007 Lucian Langa <lucilanga at gnome.org> - 0.0.6-1
- Added gconf schemas
- Added evolution-import-rss

* Tue Sep 04 2007 Lucian Langa <lucilanga at gnome.org> - 0.0.5
- Updated installed files

* Mon Apr 23 2007 root <root at mayday> - 0.0.1
- Initial spec file created by autospec ver. 0.8 with rpm 3 compatibility


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/evolution-rss/F-8/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .cvsignore	18 Feb 2008 17:30:48 -0000	1.1
+++ .cvsignore	19 Feb 2008 08:13:21 -0000	1.2
@@ -0,0 +1 @@
+evolution-rss-0.0.7.tar.gz


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/evolution-rss/F-8/sources,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- sources	18 Feb 2008 17:30:48 -0000	1.1
+++ sources	19 Feb 2008 08:13:21 -0000	1.2
@@ -0,0 +1 @@
+01635af0e33b4dab0a4855160352512c  evolution-rss-0.0.7.tar.gz




More information about the fedora-extras-commits mailing list