[evolution-rss] fix for debian bug - #528827



commit 80d803ba99dd0d277bd6d5b4fabfcb4979b8369c
Author: Lucian Langa <lucilanga gnome org>
Date:   Sat May 16 14:57:20 2009 +0300

    fix for debian bug - #528827
---
 ChangeLog                |    4 ++++
 src/Makefile.am          |    1 +
 src/Makefile.in          |   11 ++++++-----
 src/fetch.h              |    2 ++
 src/network-soup.c       |    4 ++--
 src/parser.c             |   20 +++++++++++++++++---
 src/parser.h             |    6 ++++++
 src/rss-config-factory.c |    9 ++++++++-
 src/rss.c                |    9 +++++----
 9 files changed, 51 insertions(+), 15 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 8bc7870..7d5548e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2009-05-16  Lucian Langa  <lucilanga gnome org>
+
+	* src/parser.c (layer_find_all): fix for Debian Bug #528827
+
 2009-05-15  Lucian Langa  <lucilanga gnome org>
 
 	* src/org-gnome-evolution-rss.eplug.xml:
diff --git a/src/Makefile.am b/src/Makefile.am
index edf46b0..9bc74dc 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -74,6 +74,7 @@ SOURCES = 	dbus.c			\
 		file-gio.c		\
 	  	misc.c			\
 		network-soup.c		\
+		parser.c		\
 		rss.c			\
 		rss-config-factory.c	\
 		rss-icon-factory.c
diff --git a/src/Makefile.in b/src/Makefile.in
index dd98beb..15b8c35 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -64,11 +64,11 @@ pluginLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 liborg_gnome_evolution_rss_la_LIBADD =
 am__liborg_gnome_evolution_rss_la_SOURCES_DIST = dbus.c fetch.c \
-	file-gio.c misc.c network-soup.c rss.c rss-config-factory.c \
-	rss-icon-factory.c gecko-utils.cpp
+	file-gio.c misc.c network-soup.c parser.c rss.c \
+	rss-config-factory.c rss-icon-factory.c gecko-utils.cpp
 @HAVE_GECKO_TRUE am__objects_1 = gecko-utils.lo
 am__objects_2 = dbus.lo fetch.lo file-gio.lo misc.lo network-soup.lo \
-	rss.lo rss-config-factory.lo rss-icon-factory.lo \
+	parser.lo rss.lo rss-config-factory.lo rss-icon-factory.lo \
 	$(am__objects_1)
 am_liborg_gnome_evolution_rss_la_OBJECTS = $(am__objects_2)
 liborg_gnome_evolution_rss_la_OBJECTS =  \
@@ -350,8 +350,8 @@ plugin_DATA = org-gnome-evolution-rss.eplug \
 	org-gnome-evolution-rss.xml
 
 plugin_LTLIBRARIES = liborg-gnome-evolution-rss.la
-SOURCES = dbus.c fetch.c file-gio.c misc.c network-soup.c rss.c \
-	rss-config-factory.c rss-icon-factory.c $(am__append_2)
+SOURCES = dbus.c fetch.c file-gio.c misc.c network-soup.c parser.c \
+	rss.c rss-config-factory.c rss-icon-factory.c $(am__append_2)
 liborg_gnome_evolution_rss_la_SOURCES = $(SOURCES)
 liborg_gnome_evolution_rss_la_LDFLAGS = -module -avoid-version $(WEBKIT_LIBS) $(GECKO_LIBS) $(LIBSOUP_LIBS) $(NO_UNDEFINED_LIBS) $(NO_UNDEFINED)
 #$(GECKO_RPATH)
@@ -510,6 +510,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote  /$(DEPDIR)/gecko-utils Plo am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote  /$(DEPDIR)/misc Plo am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote  /$(DEPDIR)/network-soup Plo am__quote@
+ AMDEP_TRUE@@am__include@ @am__quote  /$(DEPDIR)/parser Plo am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote  /$(DEPDIR)/rss-config-factory Plo am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote  /$(DEPDIR)/rss-icon-factory Plo am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote  /$(DEPDIR)/rss Plo am__quote@
diff --git a/src/fetch.h b/src/fetch.h
index 71d3962..89e5f9e 100644
--- a/src/fetch.h
+++ b/src/fetch.h
@@ -21,6 +21,8 @@
 #ifndef _FETCH_H_
 #define _FETCH_H_ 1
 
+#include "network.h"
+
 GString *fetch_blocking(gchar *url, GSList *headers, GString *post,
                   NetStatusCallback cb, gpointer data,
                   GError **err);
diff --git a/src/network-soup.c b/src/network-soup.c
index f397173..257bd8c 100644
--- a/src/network-soup.c
+++ b/src/network-soup.c
@@ -236,7 +236,6 @@ proxify_session(EProxy *proxy, SoupSession *session, gchar *uri)
 
 	/*avail only for > 2.26*/
 	case 0:
-		if (rss_soup_jar)
 			soup_session_add_feature_by_type (session, SOUP_TYPE_PROXY_RESOLVER_GNOME);
 		break;
 	}
@@ -505,7 +504,8 @@ net_get_unblocking(gchar *url,
 //		soup_session_async_new_with_options(SOUP_SESSION_TIMEOUT, SS_TIMEOUT, NULL);
 		soup_session_async_new();
 			
-	soup_session_add_feature(soup_sess, SOUP_SESSION_FEATURE(rss_soup_jar));
+	if (rss_soup_jar)
+		soup_session_add_feature(soup_sess, SOUP_SESSION_FEATURE(rss_soup_jar));
 	proxify_session(proxy, soup_sess, url);
 	if (cb && data) {
 		info = g_new0(CallbackInfo, 1);
diff --git a/src/parser.c b/src/parser.c
index 2fd7eed..9e421b6 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -16,8 +16,21 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <string.h>
+#include <glib/gi18n.h>
+
+#include <libxml/parserInternals.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/HTMLparser.h>
+#include <libxml/HTMLtree.h>
+#include <libxml/debugXML.h>
+
+#include "fetch.h"
 #include "rss.h"
 #include "parser.h"
+#include "misc.h"
+
+#define d(x)
 
 /************ RDF Parser *******************/
 
@@ -347,14 +360,15 @@ layer_find_all (xmlNodePtr node,
 		printf("%s.\n", node->name);
 #endif
 		if (strcasecmp ((char *)node->name, match)==0) {
-			while (strcasecmp ((char *)node->name, match)==0) {
+			while (node!=NULL && strcasecmp ((char *)node->name, match)==0) {
 				if (node->children != NULL && node->children->content != NULL) {
 					category = g_list_append(category, g_strdup((char *)node->children->content));
 				}
 				node = node->next;
 			}
 		}
-		node = node->next;
+		if (node)
+			node = node->next;
 	}
 	if (category)
 		return category;
@@ -1043,7 +1057,7 @@ update_channel(RDF *r)
 			ftotal++;
 			if (CF->encl) {
 				GError *err = NULL;
-				net_get_unblocking(
+				fetch_unblocking(
                         	        CF->encl,
                         	        textcb,
                                 	NULL,
diff --git a/src/parser.h b/src/parser.h
index 2aeb59a..f74bd41 100644
--- a/src/parser.h
+++ b/src/parser.h
@@ -27,6 +27,12 @@ gchar *layer_find_innerhtml (xmlNodePtr node, char *match, char *submatch, char
 xmlNodePtr layer_find_pos (xmlNodePtr node, char *match, char *submatch);
 char *layer_find_tag (xmlNodePtr node, char *match, char *fail);
 gchar *decode_entities(gchar *source);
+GList *layer_find_all (xmlNodePtr node, char *match, char *fail);
+xmlDoc *parse_html(char *url, const char *html, int len);
+xmlDoc *parse_html_sux (const char *buf, guint len);
+xmlDoc *xml_parse_sux (const char *buf, int len);
+create_feed *parse_channel_line(xmlNode *top, gchar *feed_name, char *main_date);
+gchar *tree_walk (xmlNodePtr root, RDF *r);
 
 #endif /*__RSS_H__*/
 
diff --git a/src/rss-config-factory.c b/src/rss-config-factory.c
index 8e6b672..08002e5 100644
--- a/src/rss-config-factory.c
+++ b/src/rss-config-factory.c
@@ -1800,7 +1800,14 @@ rss_folder_factory (EPlugin *epl, EConfigHookItemFactoryData *data)
                 goto out;
 
 	ofolder = lookup_original_folder(folder);
-	url = g_hash_table_lookup(rf->hr, lookup_key(ofolder));
+	gpointer key = lookup_key(ofolder);
+	g_print("key:%s\n", key);
+	if (!key) {
+		g_free(ofolder);
+		goto out;
+	}
+
+	url = g_hash_table_lookup(rf->hr, key);
 	if (url) {
 		feed = build_dialog_add(url, ofolder);
 		//we do not need ok/cancel buttons here
diff --git a/src/rss.c b/src/rss.c
index 1559ec9..7c9bfb1 100644
--- a/src/rss.c
+++ b/src/rss.c
@@ -87,9 +87,9 @@ int rss_verbose_debug = 0;
 #include <camel/camel-data-cache.h>
 #include <camel/camel-file-utils.h>
 
-#include <libxml/parserInternals.h>
-#include <libxml/xmlmemory.h>
-#include <libxml/HTMLparser.h>
+//#include <libxml/parserInternals.h>
+//#include <libxml/xmlmemory.h>
+//#include <libxml/HTMLparser.h>
 #include <libxml/HTMLtree.h>
 
 #ifdef HAVE_RENDERKIT
@@ -140,7 +140,7 @@ int rss_verbose_debug = 0;
 #endif
 #include "rss-config-factory.h"
 #include "rss-icon-factory.h"
-#include "parser.c"
+#include "parser.h"
 
 int pop = 0;
 GtkWidget *flabel;
@@ -183,6 +183,7 @@ extern int xmlSubstituteEntitiesDefaultValue;
 extern EProxy *proxy;
 SoupSession *webkit_session = NULL;
 SoupCookieJar *rss_soup_jar;
+extern guint rsserror;
 
 rssfeed *rf = NULL;
 guint           upgrade = 0;                // set to 2 when initailization successfull



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