[evolution-rss] add more compiler warnings flags and port code to C90



commit 319d8e3840547f924e54c0cc6d8bd9ef9df48d10
Author: Lucian Langa <lucilanga gnome org>
Date:   Wed Oct 14 21:54:30 2009 +0300

    add more compiler warnings flags and port code to C90

 configure.ac               |   26 +
 src/Makefile.am            |   21 +-
 src/evolution-import-rss.c |   10 +-
 src/fetch.c                |    7 +-
 src/gecko-utils.cpp        |    4 +-
 src/misc.c                 |   71 ++-
 src/misc.h                 |    2 +-
 src/network-soup.c         |   82 ++-
 src/parser.c               |  833 +++++++++++++-------------
 src/parser.h               |   24 +-
 src/rss-config-factory.c   |  429 ++++++++------
 src/rss-config-factory.h   |   30 +-
 src/rss-icon-factory.c     |    4 +-
 src/rss-icon-factory.h     |    2 +
 src/rss.c                  | 1406 ++++++++++++++++++++++++--------------------
 src/rss.h                  |  135 +++--
 16 files changed, 1718 insertions(+), 1368 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 1bdee6d..05adaf9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6,6 +6,32 @@ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
 AM_CONFIG_HEADER(config.h)
 AC_CONFIG_MACRO_DIR([m4])
 
+dnl ******************************
+dnl Compiler Warning Flags
+dnl ******************************
+AS_COMPILER_FLAGS(WARNING_FLAGS,
+        "-DG_DISABLE_DEPRECATED
+        -DPANGO_DISABLE_DEPRECATED
+        -DGDK_PIXBUF_DISABLE_DEPRECATED
+        -DGDK_DISABLE_DEPRECATED
+        -DGTK_DISABLE_DEPRECATED
+        -DG_DISABLE_SINGLE_INCLUDES
+        -DGTK_DISABLE_SINGLE_INCLUDES
+        -Wall -Wextra
+        -Wno-missing-field-initializers
+        -Wno-sign-compare
+        -Wno-unused-parameter
+        -Wdeclaration-after-statement
+        -Werror-implicit-function-declaration
+        -Wformat-security -Winit-self
+        -Wmissing-declarations -Wmissing-include-dirs
+        -Wmissing-noreturn -Wnested-externs -Wpointer-arith
+        -Wredundant-decls -Wundef -Wwrite-strings")
+AC_SUBST(WARNING_FLAGS)
+
+CFLAGS="$CFLAGS $WARNING_FLAGS"
+#LDFLAGS="$LDFLAGS -Wl,--no-undefined"
+
 AC_CANONICAL_HOST
 
 AM_MAINTAINER_MODE
diff --git a/src/Makefile.am b/src/Makefile.am
index f2255b4..4e53873 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,6 +1,5 @@
 
 INCLUDES =							\
-	-I$(EVOLUTION_SOURCE)					\
 	-I$(top_srcdir)						\
 	$(RENDER_CFLAGS)					\
 	$(DBUS_CFLAGS)						\
@@ -11,18 +10,18 @@ INCLUDES =							\
 	-DEVOLUTION_VERSION_STRING=\"$(EVOLUTION_EXEC_VERSION)\"\
 	-DEVOLUTION_VERSION=$(evolution_exec_int)		\
 	-DDATASERVER_VERSION=$(DATASERVER_VERSION)		\
-	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"            	\
-	-DEVOLUTION_ICONDIR=\""$(ICON_DIR)"\"            	\
-	-DGTK_VERSION="$(GTK_VERSION)"	          	  	\
-	-DLIBSOUP_VERSION="$(SOUP_VERSION)"	            	\
-	-DWEBKIT_VERSION="$(WEBKIT_VERSION)"	            	\
+	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"			\
+	-DEVOLUTION_ICONDIR=\""$(ICON_DIR)"\"			\
+	-DGTK_VERSION="$(GTK_VERSION)"				\
+	-DLIBSOUP_VERSION="$(SOUP_VERSION)"			\
+	-DWEBKIT_VERSION="$(WEBKIT_VERSION)"			\
 	-DRENDER=\""$(RENDER)"\"				\
 	-DRENDER_N=$(RENDER_N)					\
 	-DHAVE_DBUS=$(DBD)					\
 	-DDBUS_API_SUBJECT_TO_CHANGE				\
-	$(EVOLUTION_RSS_EPLUGIN_CFLAGS) -Wall
+	$(EVOLUTION_RSS_EPLUGIN_CFLAGS)
+#	$(WARNING_FLAGS)
 
- 
 if ! HAVE_XPCOM_GLUE
 INCLUDES += -DGECKO_HOME=\""$(GECKO_HOME)"\"
 endif
@@ -73,16 +72,16 @@ plugin_DATA = org-gnome-evolution-rss.eplug \
 plugin_LTLIBRARIES = liborg-gnome-evolution-rss.la
 
 
-SOURCES = 	fetch.c			\
+SOURCES =	fetch.c			\
 		file-gio.c		\
-	  	misc.c			\
+		misc.c			\
 		network-soup.c		\
 		parser.c		\
 		rss.c			\
 		rss-config-factory.c	\
 		rss-icon-factory.c
 if HAVE_GECKO
-SOURCES+= 	gecko-utils.cpp
+SOURCES+=	gecko-utils.cpp
 endif
 if HAVE_DBUS
 SOURCES+=	dbus.c
diff --git a/src/evolution-import-rss.c b/src/evolution-import-rss.c
index a3d32ab..04cc17a 100644
--- a/src/evolution-import-rss.c
+++ b/src/evolution-import-rss.c
@@ -50,11 +50,12 @@ static void
 send_dbus_ping (void)
 {
 	DBusMessage *message;
-	DBusPendingCall *pending;
+	int ret;
+
 	if (!(message = dbus_message_new_signal (DBUS_PATH, DBUS_INTERFACE, "ping")))
 		return;
 	printf("ping evolution...\n");
-	int ret = dbus_connection_send (bus, message, NULL);
+	ret = dbus_connection_send (bus, message, NULL);
 	if (ret == FALSE)
     	{
      		printf("Could not send method call\n");
@@ -66,7 +67,6 @@ static void
 send_dbus_message (const char *name, const char *data)
 {
 	DBusMessage *message;
-	int serial= 123;
 	
 	/* Create a new message on the DBUS_INTERFACE */
 	if (!(message = dbus_message_new_signal (DBUS_PATH, DBUS_INTERFACE, name)))
@@ -165,12 +165,14 @@ int
 main (int argc, char *argv[])
 {
 	guint i=0;
+	char *s;
+
 	loop = g_main_loop_new (NULL, FALSE);
 
 	if (!init_dbus ())
 		return -1;
 
-	char *s = argv[1];
+	s = argv[1];
 
 	if (bus != NULL)
                 send_dbus_ping ();
diff --git a/src/fetch.c b/src/fetch.c
index d10599b..5863fd7 100644
--- a/src/fetch.c
+++ b/src/fetch.c
@@ -33,18 +33,19 @@ fetch_blocking(gchar *url, GSList *headers, GString *post,
                   GError **err) {
 
 	gchar *scheme = NULL;
+	gchar *buf, *fname;
 	GString *result = NULL;
 	FILE *f = NULL;
 	
 	scheme = g_uri_parse_scheme(url);
 	if (scheme && !g_ascii_strcasecmp(scheme, "file")) {
-		gchar *fname = g_filename_from_uri(url, NULL, NULL);
+		fname = g_filename_from_uri(url, NULL, NULL);
 		f = fopen(fname, "rb");
 		g_free(fname);
 		g_free(scheme);
 	 	if (f == NULL)
                 	goto error;	
-		gchar *buf = g_new0 (gchar, 4096);
+		buf = g_new0 (gchar, 4096);
 		result = g_string_new(NULL);
 		while (fgets(buf, 4096, f) != NULL) {
 			g_string_append_len(result, buf, strlen(buf));
@@ -57,7 +58,7 @@ fetch_blocking(gchar *url, GSList *headers, GString *post,
 	}
 error:
 	g_print("error\n");
-	g_set_error(err, NET_ERROR, NET_ERROR_GENERIC,
+	g_set_error(err, NET_ERROR, NET_ERROR_GENERIC, "%s", 
                                 g_strerror(errno));
 	return result;
 }
diff --git a/src/gecko-utils.cpp b/src/gecko-utils.cpp
index 47f29df..19b52d0 100644
--- a/src/gecko-utils.cpp
+++ b/src/gecko-utils.cpp
@@ -115,7 +115,7 @@ gecko_set_zoom (GtkWidget *moz, gfloat zoom)
 	nsCOMPtr<nsIWebBrowser>         mWebBrowser;
         nsCOMPtr<nsIDOMWindow>          mDOMWindow;
 
-        gtk_moz_embed_get_nsIWebBrowser (GTK_MOZ_EMBED (moz), getter_AddRefs (mWebBrowser));
+        gtk_moz_embed_get_nsIWebBrowser ((GtkMozEmbed *)moz, getter_AddRefs (mWebBrowser));
         if (NULL == mWebBrowser) {
                 g_warning ("gecko_set_zoom(): Could not retrieve browser...");
                 return;
@@ -135,7 +135,7 @@ gecko_get_zoom (GtkWidget *embed)
         nsCOMPtr<nsIDOMWindow>          mDOMWindow;
         float zoom;
 
-        gtk_moz_embed_get_nsIWebBrowser (GTK_MOZ_EMBED (embed), getter_AddRefs (mWebBrowser));
+        gtk_moz_embed_get_nsIWebBrowser ((GtkMozEmbed *)embed, getter_AddRefs (mWebBrowser));
         if (NULL == mWebBrowser) {
                 g_warning ("gecko_get_zoom(): Could not retrieve browser...");
                 return 1.0;
diff --git a/src/misc.c b/src/misc.c
index 15770c1..e236197 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -32,12 +32,16 @@
 #include "parser.h"
 #include "misc.h"
 
+int getNumericConfValue(gpointer a);
+
 int
 getNumericConfValue(gpointer a)
 {
  	return 1;
 }
  
+int on_next_unread_item_activate(gpointer a);
+
 int
 on_next_unread_item_activate(gpointer a)
 {
@@ -56,6 +60,8 @@ print_hash_int(gpointer key, gpointer value, gpointer user_data)
  	g_print("key:%s, value:%d\n", (gchar *)key, GPOINTER_TO_INT(value));
 }
  
+void free_hash(gpointer key, gpointer value, gpointer user_data);
+
 void
 free_hash(gpointer key, gpointer value, gpointer user_data)
 {
@@ -78,20 +84,24 @@ check_if_match (gpointer key, gpointer value, gpointer user_data)
 }
 
 gchar *
-strextr(gchar *text, gchar *substr)
+strextr(gchar *text, const gchar *substr)
 {
+	gchar *tmp, *string;
+	GString *str;
+
  	g_return_val_if_fail( text != NULL, NULL);
+
  	if (substr == NULL)
 		return g_strdup(text);
 	//first check if string contains the substring
 	if (!strstr(text, substr))
 		return g_strdup(text);
 
-	char *tmp = g_strdup(text);
-	GString *str = g_string_new(NULL);
+	tmp = g_strdup(text);
+	str = g_string_new(NULL);
 	g_string_append(str, tmp);
 	str = g_string_erase(str, strlen(tmp) - strlen(strstr(tmp, substr)), strlen(substr));
-	gchar *string = str->str;	
+	string = str->str;
 	g_string_free(str, 0);
 	g_free(tmp);
 	return string;
@@ -103,7 +113,9 @@ gchar *
 sanitize_url(gchar *text)
 {
 	gchar *out;
+	gchar *scheme;
 	gchar *tmptext = g_strdup(text);
+
 	if (strcasestr(text, "file://"))
 		return tmptext;
 
@@ -119,7 +131,7 @@ sanitize_url(gchar *text)
 		tmptext=safetext;
 	}
 
-	gchar *scheme = g_uri_parse_scheme(tmptext);
+	scheme = g_uri_parse_scheme(tmptext);
 	d(g_print("parsed scheme:%s\n", scheme));
  	if (!scheme && !strstr (tmptext, "http://";) 
 	&& !strstr (tmptext, "https://";)) {
@@ -138,12 +150,15 @@ sanitize_url(gchar *text)
 gchar *
 sanitize_folder(gchar *text)
 {
+	gchar *tmp, *tmp2;
+
  	g_return_val_if_fail( text != NULL, NULL);
+
 	//first convert "/" character
-	char *tmp = g_strdup(text);
+	tmp = g_strdup(text);
 	g_strdelimit(tmp, "/", '|');
 	// Strip leading dots
-	char *tmp2 = tmp;
+	tmp2 = tmp;
 	while (*tmp2 == '.') tmp2++;
 	tmp2 = g_strdup (tmp2);
 	g_free (tmp);
@@ -164,14 +179,16 @@ get_url_basename(gchar *url)
 gchar *
 get_port_from_uri(gchar *uri)
 {
+	gchar **str, **str2, **str3, *port;
+
  	g_return_val_if_fail( uri != NULL, NULL);
  
 	if (strstr(uri, "://") == NULL)
 		return NULL;
- 	gchar **str = g_strsplit(uri, "://", 2);
-        gchar **str2 = g_strsplit(str[1], "/", 2);
-        gchar **str3 = g_strsplit(str2[0], ":", 2);
-        gchar *port = g_strdup(str3[1]);
+ 	str = g_strsplit(uri, "://", 2);
+        str2 = g_strsplit(str[1], "/", 2);
+        str3 = g_strsplit(str2[0], ":", 2);
+        port = g_strdup(str3[1]);
  	g_strfreev(str);
  	g_strfreev(str2);
  	g_strfreev(str3);
@@ -181,13 +198,15 @@ get_port_from_uri(gchar *uri)
 gchar *
 get_server_from_uri(gchar *uri)
 {
+	gchar **str, **str2, *server;
+
  	g_return_val_if_fail( uri != NULL, NULL);
  
 	if (strstr(uri, "://") == NULL)
 		return NULL;
- 	gchar **str = g_strsplit(uri, "://", 2);
-        gchar **str2 = g_strsplit(str[1], "/", 2);
-        gchar *server = g_strdup_printf("%s://%s", str[0], str2[0]);
+ 	str = g_strsplit(uri, "://", 2);
+        str2 = g_strsplit(str[1], "/", 2);
+        server = g_strdup_printf("%s://%s", str[0], str2[0]);
  	g_strfreev(str);
  	g_strfreev(str2);
  	return server;
@@ -367,7 +386,7 @@ gchar *extract_main_folder(gchar *folder)
 
 /* hrm, is there a library for this shit? */
 struct {
-        char *name;
+        const char *name;
         int offset;
 } tz_offsets [] = {
         { "UT", 0 },
@@ -402,9 +421,11 @@ is_rfc822(char *in)
 	const char *inptr = in;
 	struct tm tm;
 	guint i;
+	gchar *day, *monthname;
+	gboolean foundmonth;
 
         header_decode_lwsp (&inptr);
-        char *day =  decode_token(&inptr);
+	day =  decode_token(&inptr);
         if (day)
         {
 		g_free (day);
@@ -418,8 +439,8 @@ is_rfc822(char *in)
         if (tm.tm_mday == 0)
                 goto notrfc;
 
-        char *monthname = decode_token(&inptr);
-        gboolean foundmonth = FALSE;
+	monthname = decode_token(&inptr);
+        foundmonth = FALSE;
         if (monthname) {
                 for (i=0;i<sizeof(tz_months)/sizeof(tz_months[0]);i++) {
                 if (!g_ascii_strcasecmp(tz_months[i], monthname)) {
@@ -453,13 +474,17 @@ gboolean
 feed_is_new(gchar *file_name, gchar *needle)
 {
         gchar rfeed[513];
+	FILE *fr;
+	int occ;
+	gchar *tmpneedle, *port, *tp;
+
         memset(rfeed, 0, 512);
-        FILE *fr = fopen(file_name, "r");
-        int occ = 0;
-        gchar *tmpneedle = NULL;
-        gchar *port =  get_port_from_uri(needle);
+	fr = fopen(file_name, "r");
+	occ = 0;
+	tmpneedle = NULL;
+	port =  get_port_from_uri(needle);
         if (port && atoi(port) == 80) {
-                gchar *tp = g_strconcat(":", port, NULL);
+		tp = g_strconcat(":", port, NULL);
                 g_free(port);
                 tmpneedle = strextr(needle, tp);
                 g_free(tp);
diff --git a/src/misc.h b/src/misc.h
index 9f1f87f..db5db87 100644
--- a/src/misc.h
+++ b/src/misc.h
@@ -29,7 +29,7 @@ gchar *get_port_from_uri(gchar *uri);
 gchar *get_url_basename(gchar *url);
 gboolean is_rfc822(char *in);
 gchar *extract_main_folder(gchar *folder);
-gchar *strextr(gchar *text, gchar *substr);
+gchar *strextr(gchar *text, const gchar *substr);
 gchar *sanitize_url(gchar *text);
 gchar *sanitize_folder(gchar *text);
 void header_decode_lwsp(const char **in);
diff --git a/src/network-soup.c b/src/network-soup.c
index e3f9478..7e20599 100644
--- a/src/network-soup.c
+++ b/src/network-soup.c
@@ -140,12 +140,16 @@ int net_error_quark(void)
 	return 0;
 }
 
+void unblocking_error (SoupMessage *msg, gpointer user_data);
+
 void
 unblocking_error (SoupMessage *msg, gpointer user_data)
 {
 	g_print("data:%p\n", user_data);
 }
 
+void recv_msg (SoupMessage *msg, gpointer user_data);
+
 void
 recv_msg (SoupMessage *msg, gpointer user_data)
 {
@@ -171,6 +175,8 @@ remove_if_match (gpointer key, gpointer value, gpointer user_data)
 		return FALSE;
 }
 
+void construct_abort(gpointer key, gpointer value, gpointer user_data);
+
 void
 construct_abort(gpointer key, gpointer value, gpointer user_data)
 {
@@ -224,8 +230,9 @@ proxify_webkit_session(EProxy *proxy, gchar *uri)
 			g_print("WARN: e_proxy_peek_uri_for() requires evolution-data-server 2.26\n");
 			return;
 #endif
-		} else 
+		} else  {
 			d(g_print("webkit no PROXY-%s\n", uri));
+		}
 		break;
 		g_object_set (G_OBJECT (webkit_session), SOUP_SESSION_PROXY_URI, proxy_uri, NULL);
 #ifdef HAVE_LIBSOUP_GNOME
@@ -256,10 +263,12 @@ proxify_session(EProxy *proxy, SoupSession *session, gchar *uri)
 			g_print("WARN: e_proxy_peek_uri_for() requires evolution-data-server 2.26\n");
 			return;
 #endif
-			if (proxy_uri)
+			if (proxy_uri) {
 				d(g_print("proxified %s with %s:%d\n", uri, proxy_uri->host, proxy_uri->port));
-		} else 
+			}
+		} else {
 			d(g_print("no PROXY-%s\n", uri));
+		}
 		g_object_set (G_OBJECT (session), SOUP_SESSION_PROXY_URI, proxy_uri, NULL);
 		break;
 
@@ -276,24 +285,25 @@ proxify_session(EProxy *proxy, SoupSession *session, gchar *uri)
 guint
 read_up(gpointer data)
 {
+	FILE *fr;
 	char rfeed[512];
 	guint res = 0;
+	gchar *tmp, *buf, *feed_dir, *feed_name;
 	
 	if (NULL != g_hash_table_lookup(rf->hruser, data))
 		return 1;
 
-	gchar *tmp = gen_md5(data);
-	gchar *buf = g_strconcat(tmp, ".rec", NULL);
+	tmp = gen_md5(data);
+	buf = g_strconcat(tmp, ".rec", NULL);
 	g_free(tmp);
 
-	gchar *feed_dir = rss_component_peek_base_directory();
+	feed_dir = rss_component_peek_base_directory();
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
             g_mkdir_with_parents (feed_dir, 0755);
-
-	gchar *feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
+	feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
 	g_free(feed_dir);
 
-	FILE *fr = fopen(feed_name, "r");
+	fr = fopen(feed_name, "r");
 	if (fr) {
         	fgets(rfeed, 511, fr);
         	g_hash_table_insert(rf->hruser, data, g_strstrip(g_strdup(rfeed)));
@@ -310,24 +320,25 @@ read_up(gpointer data)
 guint
 save_up(gpointer data)
 {
+	FILE *fr;
+	guint res = 0;
+	gchar *feed_dir, *feed_name, *user, *pass;
 	gchar *tmp = gen_md5(data);
 	gchar *buf = g_strconcat(tmp, ".rec", NULL);
 	g_free(tmp);
-	guint res = 0;
 
-	gchar *feed_dir = rss_component_peek_base_directory();
+	feed_dir = rss_component_peek_base_directory();
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
             g_mkdir_with_parents (feed_dir, 0755);
-
-	gchar *feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
+	feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
 	g_free(feed_dir);
 
-	FILE *fr = fopen(feed_name, "w+");
+	fr = fopen(feed_name, "w+");
 	if (fr) {
-        	gchar *user = g_hash_table_lookup(rf->hruser, data);
+		user = g_hash_table_lookup(rf->hruser, data);
 			fputs(user, fr);
 	        fputs("\n", fr);
-        	gchar *pass = g_hash_table_lookup(rf->hrpass, data);
+		pass = g_hash_table_lookup(rf->hrpass, data);
         	fputs(pass, fr);
         	fclose(fr);
         	res = 1;
@@ -340,14 +351,14 @@ save_up(gpointer data)
 guint
 del_up(gpointer data)
 {
+	gchar *feed_dir, *feed_name;
 	gchar *tmp = gen_md5(data);
 	gchar *buf = g_strconcat(tmp, ".rec", NULL);
 	g_free(tmp);
-	gchar *feed_dir = rss_component_peek_base_directory();
+	feed_dir = rss_component_peek_base_directory();
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
             g_mkdir_with_parents (feed_dir, 0755);
-
-	gchar *feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
+	feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
 	g_free(feed_dir);
 	unlink(feed_name);
 	g_free(feed_name);
@@ -372,9 +383,12 @@ authenticate (SoupSession *session,
 	gpointer data)
 #endif
 {
+	SoupURI *proxy_uri;
+	gchar *user, *pass;
+	RSS_AUTH *auth_info = g_new0(RSS_AUTH, 1);
+
 	if (msg->status_code == SOUP_STATUS_PROXY_UNAUTHORIZED) {
 		g_print("proxy:%d\n", soup_auth_is_for_proxy(auth));
-	SoupURI *proxy_uri;
 	g_object_get (G_OBJECT(session),
 				"proxy-uri", &proxy_uri,
 				NULL);
@@ -383,8 +397,8 @@ authenticate (SoupSession *session,
 	return;
 	}
 
-	gchar *user = g_hash_table_lookup(rf->hruser, data);
-	gchar *pass = g_hash_table_lookup(rf->hrpass, data);
+	user = g_hash_table_lookup(rf->hruser, data);
+	pass = g_hash_table_lookup(rf->hrpass, data);
 	
 	if (user && pass) {
 #if LIBSOUP_VERSION < 2003000
@@ -409,7 +423,6 @@ authenticate (SoupSession *session,
 authpop:		if (G_OBJECT_TYPE(session) == SOUP_TYPE_SESSION_ASYNC) {
 				soup_session_pause_message(session, msg);
 			}
-			RSS_AUTH *auth_info = g_new0(RSS_AUTH, 1);
 			auth_info->url = data;
 			auth_info->soup_auth = auth;
 			auth_info->retrying = retrying;
@@ -445,6 +458,8 @@ reauthenticate (SoupSession *session,
 }
 #endif
 
+guint net_get_status(const char *url, GError **err);
+
 guint
 net_get_status(const char *url, GError **err)
 {
@@ -457,6 +472,7 @@ net_get_status(const char *url, GError **err)
 	guint response = 0;
 	SoupSession *soup_sess = NULL;
 	GSList *headers = NULL;
+	gchar *agstr;
 
 	if (!rf->b_session)
 		rf->b_session = soup_sess = 
@@ -466,7 +482,7 @@ net_get_status(const char *url, GError **err)
 
 	req = soup_message_new(SOUP_METHOD_GET, url);
 	if (!req) {
-		g_set_error(err, NET_ERROR, NET_ERROR_GENERIC,
+		g_set_error(err, NET_ERROR, NET_ERROR_GENERIC, "%s", 
 				soup_status_get_phrase(2));			//invalid url
 		goto out;
 	}
@@ -483,7 +499,7 @@ net_get_status(const char *url, GError **err)
 #endif
 		*colonpos = ':';
 	}
-	gchar *agstr = g_strdup_printf("Evolution/%s; Evolution-RSS/%s",
+	agstr = g_strdup_printf("Evolution/%s; Evolution-RSS/%s",
 			EVOLUTION_VERSION_STRING, VERSION);
 #if LIBSOUP_VERSION < 2003000
 	soup_message_add_header (req->request_headers, "User-Agent",
@@ -503,7 +519,7 @@ net_get_status(const char *url, GError **err)
 		soup_session_abort(soup_sess);
 		g_object_unref(soup_sess);
 		rf->b_session = NULL;
-		g_set_error(err, NET_ERROR, NET_ERROR_GENERIC,
+		g_set_error(err, NET_ERROR, NET_ERROR_GENERIC, "%s", 
 				soup_status_get_phrase(req->status_code));
 		goto out;
 	}
@@ -525,6 +541,7 @@ net_get_unblocking(gchar *url,
 {
 	SoupMessage *msg;
 	CallbackInfo *info = NULL;
+	gchar *agstr;
 
 	SoupSession *soup_sess = 
 //		soup_session_async_new_with_options(SOUP_SESSION_TIMEOUT, SS_TIMEOUT, NULL);
@@ -566,7 +583,7 @@ net_get_unblocking(gchar *url,
 	/* Queue an async HTTP request */
 	msg = soup_message_new ("GET", url);
 	if (!msg) {
-		g_set_error(err, NET_ERROR, NET_ERROR_GENERIC,
+		g_set_error(err, NET_ERROR, NET_ERROR_GENERIC, "%s", 
 				soup_status_get_phrase(2));			//invalid url
 		return FALSE;
 	}
@@ -579,7 +596,7 @@ net_get_unblocking(gchar *url,
 		g_hash_table_insert(rf->key_session, data, soup_sess);
 	}
 
-	gchar *agstr = g_strdup_printf("Evolution/%s; Evolution-RSS/%s",
+	agstr = g_strdup_printf("Evolution/%s; Evolution-RSS/%s",
 			EVOLUTION_VERSION_STRING, VERSION);
 #if LIBSOUP_VERSION < 2003000
 	soup_message_add_header (msg->request_headers, "User-Agent",
@@ -619,6 +636,7 @@ net_post_blocking(gchar *url, GSList *headers, GString *post,
 	GString *response = NULL;
 	CallbackInfo info = { cb, data, 0, 0 };
 	SoupSession *soup_sess = NULL;
+	gchar *agstr;
 
 	if (!rf->b_session)
 		rf->b_session = soup_sess = 
@@ -636,7 +654,7 @@ net_post_blocking(gchar *url, GSList *headers, GString *post,
 
 	req = soup_message_new(SOUP_METHOD_GET, url);
 	if (!req) {
-		g_set_error(err, NET_ERROR, NET_ERROR_GENERIC,
+		g_set_error(err, NET_ERROR, NET_ERROR_GENERIC, "%s",
 				soup_status_get_phrase(2));			//invalid url
 		goto out;
 	}
@@ -656,7 +674,7 @@ net_post_blocking(gchar *url, GSList *headers, GString *post,
 #endif
 		*colonpos = ':';
 	}
-	gchar *agstr = g_strdup_printf("Evolution/%s; Evolution-RSS/%s",
+	agstr = g_strdup_printf("Evolution/%s; Evolution-RSS/%s",
 			EVOLUTION_VERSION_STRING, VERSION);
 #if LIBSOUP_VERSION < 2003000
 	soup_message_add_header (req->request_headers, "User-Agent",
@@ -679,7 +697,7 @@ net_post_blocking(gchar *url, GSList *headers, GString *post,
 		soup_session_abort(soup_sess);
 		g_object_unref(soup_sess);
 		rf->b_session = NULL;
-		g_set_error(err, NET_ERROR, NET_ERROR_GENERIC,
+		g_set_error(err, NET_ERROR, NET_ERROR_GENERIC, "%s", 
 				soup_status_get_phrase(req->status_code));
 		goto out;
 	}
@@ -709,6 +727,8 @@ cancel_soup_sess(gpointer key, gpointer value, gpointer user_data)
         return TRUE;
 }
 
+void remove_weak(gpointer key, gpointer value, gpointer user_data);
+
 void
 remove_weak(gpointer key, gpointer value, gpointer user_data)
 {
diff --git a/src/parser.c b/src/parser.c
index 1ae9801..6f30365 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -45,19 +45,19 @@ extern rssfeed *rf;
 xmlDoc *
 rss_html_url_decode(const char *html, int len)
 {
-        xmlDoc *src = NULL;
-        xmlDoc *doc = NULL;
-        gchar *url, *tmpurl;
+	xmlDoc *src = NULL;
+	xmlDoc *doc = NULL;
+	gchar *url, *tmpurl;
 
-        src = (xmlDoc *)parse_html_sux(html, len);
+	src = (xmlDoc *)parse_html_sux(html, len);
 
-        if (!src)
-                return NULL;
+	if (!src)
+		return NULL;
 
-        doc = src;
+	doc = src;
 
-        while ((doc = (xmlDoc *)html_find((xmlNode *)doc, "img"))) {
-                if ((url = (gchar *)xmlGetProp((xmlNodePtr)doc, (xmlChar *)"src"))) {
+	while ((doc = (xmlDoc *)html_find((xmlNode *)doc, (gchar *)"img"))) {
+		if ((url = (gchar *)xmlGetProp((xmlNodePtr)doc, (xmlChar *)"src"))) {
 			tmpurl = camel_url_decode_path(strstr(url, "http:"));
 			xmlSetProp((xmlNodePtr)doc, (xmlChar *)"src", (xmlChar *)tmpurl);
 			g_free(tmpurl);
@@ -67,67 +67,67 @@ rss_html_url_decode(const char *html, int len)
 }
 
 void
-html_set_base(xmlNode *doc, char *base, char *tag, char *prop, char *basehref)
+html_set_base(xmlNode *doc, char *base, const char *tag, const char *prop, char *basehref)
 {
-        gchar *url;
+	gchar *url;
 #if LIBSOUP_VERSION < 2003000
-        SoupUri *newuri;
+	SoupUri *newuri;
 #else
-        SoupURI *newuri;
+	SoupURI *newuri;
 #endif
-        gchar *newuristr;
+	gchar *newuristr;
 #if LIBSOUP_VERSION < 2003000
-        SoupUri *base_uri = soup_uri_new (base);
+	SoupUri *base_uri = soup_uri_new (base);
 #else
-        SoupURI *base_uri = soup_uri_new (base);
+	SoupURI *base_uri = soup_uri_new (base);
 #endif
-        while ((doc = html_find((xmlNode *)doc, tag))) {
-                if ((url = (gchar *)xmlGetProp(doc, (xmlChar *)prop))) {
-                        if (!strncmp(tag, "img", 3) && !strncmp(prop, "src", 3)) {
-                                gchar *tmpurl = strplchr(url);
-                                xmlSetProp(doc, (xmlChar *)prop, (xmlChar *)tmpurl);
-                                g_free(tmpurl);
-                        }
-                        d(g_print("DEBUG: parsing: %s\n", url));
-                        if (url[0] == '/' && url[1] != '/') {
-                                gchar *server = get_server_from_uri(base);
-                                gchar *tmp = g_strdup_printf("%s/%s", server, url);
-                                xmlSetProp(doc, (xmlChar *)prop, (xmlChar *)tmp);
-                                g_free(tmp);
-                                g_free(server);
-                        }
-                        if (url[0] == '/' && url[1] == '/') {
-                                /*FIXME handle ssl */
-                                gchar *tmp = g_strdup_printf("%s%s", "http:", url);
-                                xmlSetProp(doc, (xmlChar *)prop, (xmlChar *)tmp);
-                                g_free(tmp);
-                        }
-                        if (url[0] != '/' && !g_str_has_prefix(url,  "http://";)
-                                        && !g_str_has_prefix(url, "https://";)) {
-                                // in case we have a base href= set then rewrite
-                                // all relative links
-                                if (basehref != NULL) {
+	while ((doc = html_find((xmlNode *)doc, (gchar *)tag))) {
+		if ((url = (gchar *)xmlGetProp(doc, (xmlChar *)prop))) {
+			if (!strncmp(tag, "img", 3) && !strncmp(prop, "src", 3)) {
+				gchar *tmpurl = strplchr(url);
+				xmlSetProp(doc, (xmlChar *)prop, (xmlChar *)tmpurl);
+				g_free(tmpurl);
+			}
+			d(g_print("DEBUG: parsing: %s\n", url));
+			if (url[0] == '/' && url[1] != '/') {
+				gchar *server = get_server_from_uri(base);
+				gchar *tmp = g_strdup_printf("%s/%s", server, url);
+				xmlSetProp(doc, (xmlChar *)prop, (xmlChar *)tmp);
+				g_free(tmp);
+				g_free(server);
+			}
+			if (url[0] == '/' && url[1] == '/') {
+				/*FIXME handle ssl */
+				gchar *tmp = g_strdup_printf("%s%s", "http:", url);
+				xmlSetProp(doc, (xmlChar *)prop, (xmlChar *)tmp);
+				g_free(tmp);
+			}
+			if (url[0] != '/' && !g_str_has_prefix(url,  "http://";)
+					&& !g_str_has_prefix(url, "https://";)) {
+				// in case we have a base href= set then rewrite
+				// all relative links
+				if (basehref != NULL) {
 #if LIBSOUP_VERSION < 2003000
-                                        SoupUri *newbase_uri = soup_uri_new (basehref);
+					SoupUri *newbase_uri = soup_uri_new (basehref);
 #else
-                                        SoupURI *newbase_uri = soup_uri_new (basehref);
+					SoupURI *newbase_uri = soup_uri_new (basehref);
 #endif
-                                        newuri = soup_uri_new_with_base (newbase_uri, url);
-                                        soup_uri_free(newbase_uri);
-                                } else
-                                        newuri = soup_uri_new_with_base (base_uri, url);
-                                //xmlSetProp(doc, prop, g_strdup_printf("%s/%s", get_server_from_uri(base), url));
-                                if (newuri) {
-                                        newuristr = soup_uri_to_string (newuri, FALSE);
-                                        xmlSetProp(doc, (xmlChar *)prop, (xmlChar *)newuristr);
-                                        g_free(newuristr);
-                                        soup_uri_free(newuri);
-                                }
-                        }
-                        xmlFree(url);
-                }
-        }
-        soup_uri_free(base_uri);
+					newuri = soup_uri_new_with_base (newbase_uri, url);
+					soup_uri_free(newbase_uri);
+				} else
+					newuri = soup_uri_new_with_base (base_uri, url);
+				//xmlSetProp(doc, prop, g_strdup_printf("%s/%s", get_server_from_uri(base), url));
+				if (newuri) {
+					newuristr = soup_uri_to_string (newuri, FALSE);
+					xmlSetProp(doc, (xmlChar *)prop, (xmlChar *)newuristr);
+					g_free(newuristr);
+					soup_uri_free(newuri);
+				}
+			}
+			xmlFree(url);
+		}
+	}
+	soup_uri_free(base_uri);
 }
 
 static void
@@ -135,163 +135,164 @@ my_xml_perror_handler (void *ctx, const char *msg, ...)
 {
 	rsserror = TRUE;
 //	rssstrerror
-        g_print("xml_parse_sux(): ERROR:%s\n", msg);
+	g_print("xml_parse_sux(): ERROR:%s\n", msg);
 }
 
 static void
 my_xml_parser_error_handler (void *ctx, const char *msg, ...)
 {
-        ;
+	;
 }
 
 xmlDoc *
 xml_parse_sux (const char *buf, int len)
 {
-        static xmlSAXHandler *sax;
-        xmlParserCtxtPtr ctxt;
-        xmlDoc *doc;
+	static xmlSAXHandler *sax;
+	xmlParserCtxtPtr ctxt;
+	xmlDoc *doc;
 	rsserror = FALSE;
 	rssstrerror = NULL;
 
-        g_return_val_if_fail (buf != NULL, NULL);
+	g_return_val_if_fail (buf != NULL, NULL);
 
-        if (!sax) {
-                xmlInitParser();
-                sax = xmlMalloc (sizeof (xmlSAXHandler));
+	if (!sax) {
+		xmlInitParser();
+		sax = xmlMalloc (sizeof (xmlSAXHandler));
 //#if LIBXML_VERSION > 20600 
-                xmlSAXVersion (sax, 2);
+		xmlSAXVersion (sax, 2);
 //#else
   //              memcpy (sax, &xmlDefaultSAXHandler, sizeof (xmlSAXHandler));
 //#endif
-                sax->warning = my_xml_parser_error_handler;
-                sax->error = my_xml_perror_handler;
-        }
-
-        if (len == -1)
-                len = strlen (buf);
-        ctxt = xmlCreateMemoryParserCtxt (buf, len);
-        if (!ctxt)
-                return NULL;
-
-        xmlFree (ctxt->sax);
-        ctxt->sax = sax;
+		sax->warning = my_xml_parser_error_handler;
+		sax->error = my_xml_perror_handler;
+	}
+
+	if (len == -1)
+		len = strlen (buf);
+	ctxt = xmlCreateMemoryParserCtxt (buf, len);
+	if (!ctxt)
+		return NULL;
+
+	xmlFree (ctxt->sax);
+	ctxt->sax = sax;
 //#if LIBXML_VERSION > 20600
-        ctxt->sax2 = 1;
-        ctxt->str_xml = xmlDictLookup (ctxt->dict, BAD_CAST "xml", 3);
-        ctxt->str_xmlns = xmlDictLookup (ctxt->dict, BAD_CAST "xmlns", 5);
-        ctxt->str_xml_ns = xmlDictLookup (ctxt->dict, XML_XML_NAMESPACE, 36);
+	ctxt->sax2 = 1;
+	ctxt->str_xml = xmlDictLookup (ctxt->dict, BAD_CAST "xml", 3);
+	ctxt->str_xmlns = xmlDictLookup (ctxt->dict, BAD_CAST "xmlns", 5);
+	ctxt->str_xml_ns = xmlDictLookup (ctxt->dict, XML_XML_NAMESPACE, 36);
 //#endif
 
-        ctxt->recovery = TRUE;
-        ctxt->vctxt.error = my_xml_parser_error_handler;
-        ctxt->vctxt.warning = my_xml_parser_error_handler;
+	ctxt->recovery = TRUE;
+	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);
+	xmlParseDocument (ctxt);
 
-        doc = ctxt->myDoc;
-        ctxt->sax = NULL;
-        xmlFreeParserCtxt (ctxt);
+	doc = ctxt->myDoc;
+	ctxt->sax = NULL;
+	xmlFreeParserCtxt (ctxt);
 
-        return doc;
+	return doc;
 }
 
 xmlDoc *
 parse_html_sux (const char *buf, guint len)
 {
-        xmlDoc *doc;
+	xmlDoc *doc;
 #if LIBXML_VERSION > 20600
-        static xmlSAXHandler *sax;
-        htmlParserCtxtPtr ctxt;
+	static xmlSAXHandler *sax;
+	htmlParserCtxtPtr ctxt;
 
-        g_return_val_if_fail (buf != NULL, NULL);
+	g_return_val_if_fail (buf != NULL, NULL);
 
-        if (!sax) {
-                xmlInitParser();
-                sax = xmlMalloc (sizeof (htmlSAXHandler));
-                memcpy (sax, &htmlDefaultSAXHandler, sizeof (xmlSAXHandlerV1));
-                sax->warning = my_xml_parser_error_handler;
-                sax->error = my_xml_parser_error_handler;
-        }
+	if (!sax) {
+		xmlInitParser();
+		sax = xmlMalloc (sizeof (htmlSAXHandler));
+		memcpy (sax, &htmlDefaultSAXHandler, sizeof (xmlSAXHandlerV1));
+		sax->warning = my_xml_parser_error_handler;
+		sax->error = my_xml_parser_error_handler;
+	}
 
-        if (len == -1)
-                len = strlen (buf);
-        ctxt = htmlCreateMemoryParserCtxt (buf, len);
-        if (!ctxt)
-                return NULL;
+	if (len == -1)
+		len = strlen (buf);
+	ctxt = htmlCreateMemoryParserCtxt (buf, len);
+	if (!ctxt)
+		return NULL;
 
-        xmlFree (ctxt->sax);
-        ctxt->sax = sax;
-        ctxt->vctxt.error = my_xml_parser_error_handler;
-        ctxt->vctxt.warning = my_xml_parser_error_handler;
+	xmlFree (ctxt->sax);
+	ctxt->sax = sax;
+	ctxt->vctxt.error = my_xml_parser_error_handler;
+	ctxt->vctxt.warning = my_xml_parser_error_handler;
 
-        htmlCtxtUseOptions(ctxt, HTML_PARSE_NONET
-                                | HTML_PARSE_COMPACT
-                                | HTML_PARSE_NOBLANKS);
+	htmlCtxtUseOptions(ctxt, HTML_PARSE_NONET
+				| HTML_PARSE_COMPACT
+				| HTML_PARSE_NOBLANKS);
 
-        htmlParseDocument (ctxt);
-        doc = ctxt->myDoc;
+	htmlParseDocument (ctxt);
+	doc = ctxt->myDoc;
 
-        ctxt->sax = NULL;
-        htmlFreeParserCtxt (ctxt);
+	ctxt->sax = NULL;
+	htmlFreeParserCtxt (ctxt);
 
 #else /* LIBXML_VERSION <= 20600 */
-        char *buf_copy = g_strndup (buf, len);
+	char *buf_copy = g_strndup (buf, len);
 
-        doc = htmlParseDoc (buf_copy, NULL);
-        g_free (buf_copy);
+	doc = htmlParseDoc (buf_copy, NULL);
+	g_free (buf_copy);
 #endif
-        return doc;
+	return doc;
 }
 
 /*modifies a html document to be absolute */
 xmlDoc *
 parse_html(char *url, const char *html, int len)
 {
-        xmlDoc *src = NULL;
-        xmlDoc *doc = NULL;
-
-        src = (xmlDoc *)parse_html_sux(html, len);
-
-        if (!src)
-                return NULL;
-        doc = src;
-        gchar *newbase = NULL;
-        newbase = (gchar *)xmlGetProp(html_find((xmlNode *)doc, "base"), (xmlChar *)"href");
-        d(g_print("newbase:|%s|\n", newbase));
-        xmlDoc *tmpdoc = (xmlDoc *)html_find((xmlNode *)doc, "base");
-        xmlUnlinkNode((xmlNode *)tmpdoc);
-        html_set_base((xmlNode *)doc, url, "a", "href", newbase);
-        html_set_base((xmlNode *)doc, url, "img", "src", newbase);
-        html_set_base((xmlNode *)doc, url, "input", "src", newbase);
-        html_set_base((xmlNode *)doc, url, "link", "src", newbase);
-        html_set_base((xmlNode *)doc, url, "body", "background", newbase);
-        html_set_base((xmlNode *)doc, url, "script", "src", newbase);
+	xmlDoc *src = NULL;
+	xmlDoc *doc = NULL;
+	xmlDoc *tmpdoc;
+	gchar *newbase = NULL;
+
+	src = (xmlDoc *)parse_html_sux(html, len);
+
+	if (!src)
+		return NULL;
+	doc = src;
+	newbase = (gchar *)xmlGetProp(html_find((xmlNode *)doc, (gchar *)"base"), (xmlChar *)"href");
+	d(g_print("newbase:|%s|\n", newbase));
+	tmpdoc = (xmlDoc *)html_find((xmlNode *)doc, (gchar *)"base");
+	xmlUnlinkNode((xmlNode *)tmpdoc);
+	html_set_base((xmlNode *)doc, url, "a", "href", newbase);
+	html_set_base((xmlNode *)doc, url, "img", "src", newbase);
+	html_set_base((xmlNode *)doc, url, "input", "src", newbase);
+	html_set_base((xmlNode *)doc, url, "link", "src", newbase);
+	html_set_base((xmlNode *)doc, url, "body", "background", newbase);
+	html_set_base((xmlNode *)doc, url, "script", "src", newbase);
 /*      while (doc = html_find((xmlNode *)doc, "img"))
-        {
-                if (url = xmlGetProp(doc, "src"))
-                {
-                        gchar *str = strplchr(url);
-                        g_print("%s\n", str);
-                        xmlSetProp(doc, "src", str);
-                        g_free(str);
-                        xmlFree(url);
-                }
-        }*/
-        doc = src;
-        if (newbase)
-                xmlFree(newbase);
-        return doc;
+	{
+		if (url = xmlGetProp(doc, "src"))
+		{
+			gchar *str = strplchr(url);
+			g_print("%s\n", str);
+			xmlSetProp(doc, "src", str);
+			g_free(str);
+			xmlFree(url);
+		}
+	}*/
+	doc = src;
+	if (newbase)
+		xmlFree(newbase);
+	return doc;
 }
 
-char *
+const char *
 layer_find_innerelement (xmlNodePtr node, 
-	    char *match, char *el,
-	    char *fail)
+	    const char *match, const char *el,
+	    const char *fail)
 {
 	while (node!=NULL) {
 #ifdef RDF_DEBUG
@@ -308,37 +309,37 @@ layer_find_innerelement (xmlNodePtr node,
 
 xmlNode *
 html_find (xmlNode *node,
-            char *match)
+	    gchar *match)
 {
 	while (node) {
 #ifdef RDF_DEBUG
-                xmlDebugDumpNode (stdout, node, 32);
-                printf("%s.\n", node->name);
+		xmlDebugDumpNode (stdout, node, 32);
+		printf("%s.\n", node->name);
 #endif
-                if (node->children)
-                        node = node->children;
-                else {
-                        while (node && !node->next)
-                                node = node->parent;
-                        if (!node)
-                                return NULL;
-                        node = node->next;
-                }
-
-                if (node->name) {
-                        if (!strcmp ((char *)node->name, match))
-                                return node;
-                }
-        }
-        return NULL;
+		if (node->children)
+			node = node->children;
+		else {
+			while (node && !node->next)
+				node = node->parent;
+			if (!node)
+				return NULL;
+			node = node->next;
+		}
+
+		if (node->name) {
+			if (!strcmp ((char *)node->name, match))
+				return node;
+		}
+	}
+	return NULL;
 }
 
 /* returns node disregarding type
  */
-char *
+const char *
 layer_find (xmlNodePtr node, 
-	    char *match, 
-	    char *fail)
+	    const char *match, 
+	    const char *fail)
 {
 	while (node!=NULL) {
 #ifdef RDF_DEBUG
@@ -362,8 +363,8 @@ layer_find (xmlNodePtr node,
 
 GList *
 layer_find_all (xmlNodePtr node, 
-	    char *match, 
-	    char *fail)
+		const char *match, 
+		const char *fail)
 {
 	GList *category = NULL;
 	while (node!=NULL) {
@@ -442,7 +443,7 @@ wfw_rss(xmlNode *node, gchar *fail)
 		return fail;
 }
 
-gchar *standard_rss_modules[5][3] = {
+const gchar *standard_rss_modules[5][3] = {
 	{"content", "content", (gchar *)content_rss},
 	{"dublin core", "dc", (gchar *)dublin_core_rss},
 	{"syndication", "sy", (gchar *)syndication_rss},
@@ -450,16 +451,16 @@ gchar *standard_rss_modules[5][3] = {
 	{"slashdot entities", "slash", (gchar *)dublin_core_rss}};
 
 //<nsmatch:match>content</nsmatch:match>
-static char*
+const char*
 layer_find_ns_tag(xmlNodePtr node,
-		char *nsmatch,
-		char *match,
-		char *fail)
+		const char *nsmatch,
+		const char *match,
+		const char *fail)
 {
 	int i;
 	char* (*func)();
 
-        while (node!=NULL) {
+	while (node!=NULL) {
 		if (node->ns && node->ns->prefix) {
 			for (i=0; i < 5; i++) {
 				if (!strcasecmp ((char *)node->ns->prefix, standard_rss_modules[i][1])) {
@@ -471,16 +472,16 @@ layer_find_ns_tag(xmlNodePtr node,
 				}
 			}
 		}
-                node = node->next;
+		node = node->next;
 	}
 	return fail;
 }
 
 /* find matching tag (with html entities) */
-char *
+const char *
 layer_find_tag (xmlNodePtr node,
-            char *match,
-            char *fail)
+		const char *match,
+		const char *fail)
 {
 	xmlBufferPtr buf = xmlBufferCreate();
 	gchar *content;
@@ -488,10 +489,10 @@ layer_find_tag (xmlNodePtr node,
 	int i;
 	char* (*func)();
 
-        while (node!=NULL) {
+	while (node!=NULL) {
 #ifdef RDF_DEBUG
-                xmlDebugDumpNode (stdout, node, 32);
-                printf("%s.\n", node->name);
+		xmlDebugDumpNode (stdout, node, 32);
+		printf("%s.\n", node->name);
 #endif
 		if (node->ns && node->ns->prefix) {
 			for (i=0; i < 4; i++) {
@@ -511,7 +512,7 @@ layer_find_tag (xmlNodePtr node,
 					//we need separate xhtml parsing because of xmlNodegetcontent substitutes html entities
 					if (nodetype && !strcasecmp(nodetype, "xhtml")) {		// test this with "html" or smth else
 						//this looses html entities
- 						len = xmlNodeDump(buf, node->doc, node, 0, 0);
+						len = xmlNodeDump(buf, node->doc, node, 0, 0);
 						content = g_strdup_printf("%s", xmlBufferContent(buf));
 					} else {
 						content = (char *)xmlNodeGetContent(node);
@@ -520,16 +521,16 @@ layer_find_tag (xmlNodePtr node,
 					if (nodetype)
 						xmlFree(nodetype);
 					return content;
-                        	} else {
+				} else {
 					xmlBufferFree(buf);
-                                	return fail;
-                        	}
+					return fail;
+				}
 			}
 		}
-                node = node->next;
-        }
+		node = node->next;
+	}
 	xmlBufferFree(buf);
-        return fail;
+	return fail;
 }
 
 gchar*
@@ -545,22 +546,22 @@ media_rss(xmlNode *node, gchar *search, gchar *fail)
 		return fail;
 }
 
-gchar *property_rss_modules[1][3] = {
+const gchar *property_rss_modules[1][3] = {
 	{"media", "media", (gchar *)media_rss}};
 
 char *
 layer_find_tag_prop (xmlNodePtr node,
-            char *match,
-            char *search,
-            char *fail)
+	    char *match,
+	    char *search,
+	    char *fail)
 {
 	int i;
 	char* (*func)();
 
-        while (node!=NULL) {
+	while (node!=NULL) {
 #ifdef RDF_DEBUG
-                xmlDebugDumpNode (stdout, node, 32);
-                printf("%s.\n", node->name);
+		xmlDebugDumpNode (stdout, node, 32);
+		printf("%s.\n", node->name);
 #endif
 		if (node->ns && node->ns->prefix)
 		{
@@ -576,15 +577,15 @@ layer_find_tag_prop (xmlNodePtr node,
 				}
 			}
 		}
-                node = node->next;
+		node = node->next;
 	}
 	return fail;
 }
 
 gchar *
 layer_find_innerhtml (xmlNodePtr node,
-	    char *match, char *submatch,
-	    char *fail)
+		const char *match, const char *submatch,
+		gchar *fail)
 {
 	while (node!=NULL) {
 #ifdef RDF_DEBUG
@@ -592,7 +593,7 @@ layer_find_innerhtml (xmlNodePtr node,
 		printf("%s.\n", node->name);
 #endif
 		if (strcasecmp ((char *)node->name, match)==0 && node->children) {
-			return layer_find(node->children->next, submatch, fail);
+			return (gchar *)layer_find(node->children->next, submatch, fail);
 		}
 		node = node->next;
 	}
@@ -601,27 +602,28 @@ layer_find_innerhtml (xmlNodePtr node,
 
 xmlNodePtr
 layer_find_pos (xmlNodePtr node,
-            char *match, char *submatch)
+		const char *match,
+		const char *submatch)
 {
 	xmlNodePtr subnode;
-        while (node!=NULL) {
+	while (node!=NULL) {
 #ifdef RDF_DEBUG
-                xmlDebugDumpNode (stdout, node, 32);
-                printf("%s.\n", node->name);
+		xmlDebugDumpNode (stdout, node, 32);
+		printf("%s.\n", node->name);
 #endif
-                if (strcasecmp ((char *)node->name, match)==0 && node->children) {
+		if (strcasecmp ((char *)node->name, match)==0 && node->children) {
 			subnode = node->children;
 			while (subnode!=NULL) {
-                		if (strcasecmp ((char *)subnode->name, submatch)==0 && subnode->children)
+				if (strcasecmp ((char *)subnode->name, submatch)==0 && subnode->children)
 				{
-                        			return subnode->children->next;
+						return subnode->children->next;
 				}
 				subnode = subnode->next;
 			}
-                }
-                node = node->next;
-        }
-        return NULL;
+		}
+		node = node->next;
+	}
+	return NULL;
 }
 
 char *
@@ -629,7 +631,7 @@ layer_find_url (xmlNodePtr node,
 		char *match, 
 		char *fail)
 {
-	char *p = layer_find (node, match, fail);
+	char *p = (char *)layer_find (node, match, fail);
 	char *r = p;
 	static char *wb = NULL;
 	char *w;
@@ -683,8 +685,9 @@ tree_walk (xmlNodePtr root, RDF *r)
 	xmlNodePtr channel = NULL;
 	xmlNodePtr image = NULL;
 	GArray *item = g_array_new (TRUE, TRUE, sizeof (xmlNodePtr));
-	char *t;
-	char *charset;
+	gchar *t;
+	gchar *charset;
+	gchar *md2, *tmp, *ver;
 
 	/* check in-memory encoding first, fallback to transport encoding, which may or may not be correct */
 	if (r->cache->charset == XML_CHAR_ENCODING_UTF8
@@ -692,7 +695,7 @@ tree_walk (xmlNodePtr root, RDF *r)
 		charset = NULL;
 	} else {
 		/* bad/missing encoding, fallback to latin1 (locale?) */
-		charset = r->cache->encoding ? (char *)r->cache->encoding : "iso-8859-1";
+		charset = r->cache->encoding ? (gchar *)r->cache->encoding : (gchar *)"iso-8859-1";
 	}
 
 	do {
@@ -711,7 +714,7 @@ tree_walk (xmlNodePtr root, RDF *r)
 					r->type = g_strdup("RDF");
 				r->type_id = RDF_FEED;
 //                		gchar *ver = xmlGetProp(node, "version");
-                		if (r->version)
+				if (r->version)
 					g_free(r->version);
 				r->version = g_strdup("(RSS 1.0)");
 //				if (ver)
@@ -725,8 +728,8 @@ tree_walk (xmlNodePtr root, RDF *r)
 				if (!r->type)
 				r->type = g_strdup("RSS");
 				r->type_id = RSS_FEED;
-                		gchar *ver = (gchar *)xmlGetProp(node, (xmlChar *)"version");
-                		if (r->version)
+				ver = (gchar *)xmlGetProp(node, (xmlChar *)"version");
+				if (r->version)
 					g_free(r->version);
 				r->version = g_strdup(ver);
 				if (ver)
@@ -738,17 +741,14 @@ tree_walk (xmlNodePtr root, RDF *r)
 				if (!r->type)
 				r->type = g_strdup("ATOM");
 				r->type_id = ATOM_FEED;
-                		gchar *ver = (gchar *)xmlGetProp(node, (xmlChar *)"version");
-				if (ver)
-				{
-                			if (r->version)
+				ver = (gchar *)xmlGetProp(node, (xmlChar *)"version");
+				if (ver) {
+					if (r->version)
 						g_free(r->version);
 					r->version = g_strdup(ver);
 					xmlFree(ver);
-				}
-				else
-				{
-                			if (r->version)
+				} else {
+					if (r->version)
 						g_free(r->version);
 					r->version = g_strdup("1.0");
 				}
@@ -775,8 +775,7 @@ tree_walk (xmlNodePtr root, RDF *r)
 			}
 			walk = walk->next;
 		}
-	}
-	while (rewalk);
+	} while (rewalk);
 	
 	if (channel == NULL) {
 		fprintf(stderr, "ERROR:No channel definition.\n");
@@ -787,7 +786,7 @@ tree_walk (xmlNodePtr root, RDF *r)
 //	g_free(server);
 
 	if (image != NULL)
-		r->image = layer_find(image->children, "url", NULL);
+		r->image = (gchar *)layer_find(image->children, "url", NULL);
 
 //	g_print("status image:%d\n", net_get_status(r->image, NULL));
 //	if (404 == net_get_status(r->image, NULL))
@@ -801,19 +800,18 @@ tree_walk (xmlNodePtr root, RDF *r)
 	//till validation process
 	if (t == NULL || !g_ascii_strncasecmp(t,
 			DEFAULT_NO_CHANNEL, 
-			strlen(DEFAULT_NO_CHANNEL))) 
-	{
+			strlen(DEFAULT_NO_CHANNEL))) {
 		
-		t = layer_find(channel->children, 
+		t = (gchar *)layer_find(channel->children, 
 				"title", 
 				DEFAULT_NO_CHANNEL);
 		t = decode_html_entities(t);	
-		gchar *tmp = sanitize_folder(t);
+		tmp = sanitize_folder(t);
 		g_free(t);
 		t = tmp;
 		t = generate_safe_chn_name(t);
 	}
-	gchar *tmp = layer_find(channel->children, "ttl", NULL);
+	tmp = (gchar *)layer_find(channel->children, "ttl", NULL);
 	if (tmp)
 		r->ttl = atoi(tmp);
 	else
@@ -821,7 +819,7 @@ tree_walk (xmlNodePtr root, RDF *r)
 
 	//items might not have a date
 	// so try to grab channel/feed date
-	gchar *md2 = g_strdup(layer_find(channel->children, "date", 
+	md2 = g_strdup(layer_find(channel->children, "date", 
 		layer_find(channel->children, "pubDate", 
 		layer_find(channel->children, "updated", NULL))));
 	r->maindate = md2;
@@ -838,11 +836,15 @@ parse_channel_line(xmlNode *top, gchar *feed_name, char *main_date)
 	char *b = NULL;
 	char *d2 = NULL;
 	char *sp = NULL;
+	char *d, *link = NULL;
+	char *comments = NULL;
 	gchar *feed = NULL;
-	gchar *encl;
+	gchar *encl, *tmp, *id;
+	gchar *qsafe, *tcat;
 	xmlChar *buff = NULL;
 	guint size = 0;
 	GList *category = NULL;
+	create_feed *CF;
 
 	char *p = g_strdup(layer_find (top, "title", "Untitled article"));
 	//firstly try to parse as an ATOM author
@@ -852,7 +854,7 @@ parse_channel_line(xmlNode *top, gchar *feed_name, char *main_date)
 	char *q3 = g_strdup(layer_find_innerhtml (top, "author", "email", NULL));
 	if (q1) {
 		q1 = g_strdelimit(q1, "><", ' ');
-		gchar *qsafe = encode_rfc2047(q1);
+		qsafe = encode_rfc2047(q1);
 		if (q3)	{
 			q3 = g_strdelimit(q3, "><", ' ');
 			q = g_strdup_printf("%s <%s>", qsafe, q3);
@@ -861,10 +863,10 @@ parse_channel_line(xmlNode *top, gchar *feed_name, char *main_date)
 				g_free(q3);
 			} else {
 				if (q2)
-        				q2 = g_strdelimit(q2, "><", ' ');
+					q2 = g_strdelimit(q2, "><", ' ');
 				else 
 					q2 = g_strdup(q1);
-               			q = g_strdup_printf("%s <%s>", qsafe, q2);
+				q = g_strdup_printf("%s <%s>", qsafe, q2);
 				g_free(q1);
 				g_free(q2);
 			}
@@ -877,14 +879,14 @@ parse_channel_line(xmlNode *top, gchar *feed_name, char *main_date)
 			if (source != NULL)
 				q = g_strdup(layer_find(source, "name", NULL));
 			else
-               			q = g_strdup(layer_find (top, "author", 
+				q = g_strdup(layer_find (top, "author", 
 				layer_find (top, "creator", NULL)));
 			if (q) {
 				//evo will go crazy when it'll encounter ":" character
-        			//it probably enforces strict rfc2047 compliance
-        			q = g_strdelimit(q, "><:", ' ');
-				gchar *qsafe = encode_rfc2047(q);
-        			gchar *tmp = g_strdup_printf("\"%s\" <\"%s\">", qsafe, q);
+				//it probably enforces strict rfc2047 compliance
+				q = g_strdelimit(q, "><:", ' ');
+				qsafe = encode_rfc2047(q);
+				tmp = g_strdup_printf("\"%s\" <\"%s\">", qsafe, q);
 				g_free(q);
 				g_free(qsafe);
 				q = tmp;
@@ -893,26 +895,26 @@ parse_channel_line(xmlNode *top, gchar *feed_name, char *main_date)
 			}
 		}
 		//FIXME this might need xmlFree when namespacing
-		b = layer_find_tag (top, "content",			//we prefer content first					  <--
+		b = (gchar *)layer_find_tag (top, "content",		//we prefer content first		  <--
 				layer_find_tag (top, "description", 	//it seems description is rather shorten version of the content, so |
-					layer_find_tag (top, "summary", 
-					NULL)));
+				layer_find_tag (top, "summary", 
+				NULL)));
 		if (b && strlen(b)) 
 			b = g_strstrip(b);
 		else
-	               	b = g_strdup(layer_find (top, "description",
+			b = g_strdup(layer_find (top, "description",
 				layer_find (top, "content",
 				layer_find (top, "summary", NULL))));
 
 		if (!b || !strlen(b))
 			b = g_strdup(_("No information"));
 
-                char *d = layer_find (top, "pubDate", NULL);
+		d = (gchar *)layer_find (top, "pubDate", NULL);
 		//date in dc module format
 		if (!d) {
-                	d2 = layer_find (top, "date", NULL);					//RSS2
+			d2 = (gchar *)layer_find (top, "date", NULL);					//RSS2
 			if (!d2) {
-				d2 = layer_find(top, "updated", NULL); 			//ATOM
+				d2 = (gchar *)layer_find(top, "updated", NULL); 			//ATOM
 				if (!d2) //take channel date if exists
 					d2 = g_strdup(main_date);
 			}
@@ -920,29 +922,27 @@ parse_channel_line(xmlNode *top, gchar *feed_name, char *main_date)
 
 		//<enclosure url=>
 		//handle multiple enclosures
-		encl = layer_find_innerelement(top, "enclosure", "url",	// RSS 2.0 Enclosure
+		encl = (gchar *)layer_find_innerelement(top, "enclosure", "url",	// RSS 2.0 Enclosure
 			layer_find_innerelement(top, "link", "enclosure", NULL)); 		// ATOM Enclosure
 //		encl = layer_find_tag_prop(el->children, "media", "url",	// RSS 2.0 Enclosure
 //							NULL); 		// ATOM Enclosure
 		//we have to free this somehow
 		//<link></link>
-                char *link = g_strdup(layer_find (top, "link", NULL));		//RSS,
+		link = g_strdup(layer_find (top, "link", NULL));		//RSS,
 		if (!link) 								// <link href=>
-			link = layer_find_innerelement(top, "link", "href", 
+			link = (gchar *)layer_find_innerelement(top, "link", "href", 
 							g_strdup(_("No Information")));	//ATOM
 
 //                char *comments = g_strdup(layer_find (top, "comments", NULL));	//RSS,
-		char *comments = NULL;
-//		if (!comments)
-			comments = layer_find_ns_tag(top, "wfw", "commentRss", NULL); //add slash:comments
-		gchar *tcat = layer_find_ns_tag(top, "dc", "subject", NULL);
+		comments = (gchar *)layer_find_ns_tag(top, "wfw", "commentRss", NULL); //add slash:comments
+		tcat = (gchar *)layer_find_ns_tag(top, "dc", "subject", NULL);
 		if (tcat)
 			category = g_list_append(category, g_strdup(tcat));
 		else
 			category = layer_find_all(top, "category", NULL);
 
-		char *id = layer_find (top, "id",				//ATOM
-				layer_find (top, "guid", NULL));		//RSS 2.0
+		id = (gchar *)layer_find (top, (gchar *)"id",				//ATOM
+				layer_find (top, (gchar *)"guid", NULL));		//RSS 2.0
 		feed = g_strdup_printf("%s\n", id ? id : link);
 		g_strstrip(feed);
 		d(g_print("link:%s\n", link));
@@ -954,37 +954,37 @@ parse_channel_line(xmlNode *top, gchar *feed_name, char *main_date)
 
 		//not very nice but prevents unnecessary long body processing
 		if (!feed_is_new(feed_name, feed)) {
-                        ftotal++;
-                        sp =  decode_html_entities (p);
-                        gchar *tmp = decode_utf8_entities(b);
-                        g_free(b);
+			ftotal++;
+			sp =  decode_html_entities (p);
+			tmp = decode_utf8_entities(b);
+			g_free(b);
 
 			if (feed_name) {
-                        	xmlDoc *src = (xmlDoc *)parse_html_sux(tmp, strlen(tmp));
-                        	if (src) {
-                                	xmlNode *doc = (xmlNode *)src;
-
-                                	while ((doc = html_find(doc, "img"))) {
-                                        	gchar *name = NULL;
-                                        	xmlChar *url = xmlGetProp(doc, (xmlChar *)"src");
-                                        	if (url) {
-                                                	if ((name = fetch_image((gchar *)url, link))) {
-                                                        	xmlSetProp(doc, (xmlChar *)"src", (xmlChar *)name);
+				xmlDoc *src = (xmlDoc *)parse_html_sux(tmp, strlen(tmp));
+				if (src) {
+					xmlNode *doc = (xmlNode *)src;
+
+					while ((doc = html_find(doc, (gchar *)"img"))) {
+						gchar *name = NULL;
+						xmlChar *url = xmlGetProp(doc, (xmlChar *)"src");
+						if (url) {
+							if ((name = fetch_image((gchar *)url, link))) {
+								xmlSetProp(doc, (xmlChar *)"src", (xmlChar *)name);
 								g_free(name);
 							}
-                                                	xmlFree(url);
-                                        	}
-                                	}
-                                	xmlDocDumpMemory(src, &buff, (int*)&size);
-                                	xmlFree(src);
-                        	}
-                        	g_free(tmp);
-                        	b=(gchar *)buff;
+							xmlFree(url);
+						}
+					}
+					xmlDocDumpMemory(src, &buff, (int*)&size);
+					xmlFree(src);
+				}
+				g_free(tmp);
+				b=(gchar *)buff;
 			} else
 				b = tmp;
 		}
 
-		create_feed *CF = g_new0(create_feed, 1);	
+		CF = g_new0(create_feed, 1);	
 		/* pack all data */
 		CF->q 		= g_strdup(q);
 		CF->subj 	= g_strdup(sp);
@@ -1012,7 +1012,8 @@ parse_channel_line(xmlNode *top, gchar *feed_name, char *main_date)
 gchar *
 update_channel(RDF *r)
 {
-        guint i;
+	FILE *fr, *fw;
+	guint i;
 	gchar *sender;
 	xmlNodePtr el;
 	gchar *subj;
@@ -1022,26 +1023,23 @@ update_channel(RDF *r)
 	gchar *main_date = r->maindate;
 	GArray *item = r->item;
 	GtkWidget *progress = r->progress;
+	gchar *buf, *safes, *feed_dir, *feed_name;
+	gchar *uid, *msg;
 
-	gchar *safes = encode_rfc2047(chn_name);
-
+	safes = encode_rfc2047(chn_name);
 	sender = g_strdup_printf("%s <%s>", safes, chn_name);
 	g_free(safes);
 
 	migrate_crc_md5(chn_name, url);
-
-	gchar *buf = gen_md5(url);
-
-	gchar *feed_dir = rss_component_peek_base_directory();
+	buf = gen_md5(url);
+	feed_dir = rss_component_peek_base_directory();
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
 	    g_mkdir_with_parents (feed_dir, 0755);
-
-	gchar *feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
+	feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
 	g_free(feed_dir);
 	
-	FILE *fr = fopen(feed_name, "r");
-	FILE *fw = fopen(feed_name, "a+");
-	//int fw = g_open (feed_name, O_WRONLY | O_CREAT| O_APPEND | O_BINARY, 0666);
+	fr = fopen(feed_name, "r");
+	fw = fopen(feed_name, "a+");
 	
 	for (i=0; NULL != (el = g_array_index(item, xmlNodePtr, i)); i++) {
 		update_sr_message();
@@ -1049,9 +1047,9 @@ update_channel(RDF *r)
 
 		if (progress) {
 			gdouble fraction = (gdouble)i/item->len;
-                	gtk_progress_bar_set_fraction((GtkProgressBar *)progress, fraction);
-			gchar *msg = g_strdup_printf("%2.0f%% done", fraction*100);
-                	gtk_progress_bar_set_text((GtkProgressBar *)progress, msg);
+			gtk_progress_bar_set_fraction((GtkProgressBar *)progress, fraction);
+			msg = g_strdup_printf("%2.0f%% done", fraction*100);
+			gtk_progress_bar_set_text((GtkProgressBar *)progress, msg);
 			g_free(msg);
 		}
 
@@ -1059,7 +1057,7 @@ update_channel(RDF *r)
 		if (!r->uids) {
 			r->uids = g_array_new(TRUE, TRUE, sizeof(gpointer));
 		}
-		gchar *uid = g_strdup(CF->feed_uri);
+		uid = g_strdup(CF->feed_uri);
 		g_array_append_val(r->uids, uid);
 		CF->feedid 	= g_strdup(buf);
 		CF->sender 	= g_strdup(sender);
@@ -1071,22 +1069,22 @@ update_channel(RDF *r)
 		subj = CF->subj;
 
 		while (gtk_events_pending())
-                  gtk_main_iteration ();
+		  gtk_main_iteration ();
 
 		if (!feed_is_new(feed_name, CF->feed_uri)) {
 			ftotal++;
 			if (CF->encl) {
 				GError *err = NULL;
 				fetch_unblocking(
-                        	        CF->encl,
-                        	        textcb,
-                                	NULL,
-                                	(gpointer)finish_enclosure,
-                                	CF,
+					CF->encl,
+					textcb,
+					NULL,
+					(gpointer)finish_enclosure,
+					CF,
 					0,
-                                	&err);
+					&err);
 			} else {
-   	    	    		create_mail(CF);
+				create_mail(CF);
 				write_feed_status_line(CF->feed_fname, CF->feed_uri);
 				free_cf(CF);
 			}
@@ -1095,7 +1093,7 @@ update_channel(RDF *r)
 			update_status_icon(chn_name, subj);
 		} else
 			free_cf(CF);
-        }
+	}
 out:	g_free(sender);
 
 	if (fr) fclose(fr);
@@ -1108,120 +1106,105 @@ out:	g_free(sender);
 gchar *
 encode_html_entities(gchar *str)
 {
-        g_return_val_if_fail (str != NULL, NULL);
-
-/*        xmlParserCtxtPtr ctxt = xmlNewParserCtxt();
-        xmlCtxtUseOptions(ctxt,   XML_PARSE_RECOVER
-                                | XML_PARSE_NOENT
-                                | XML_PARSE_NOERROR
-                                | XML_PARSE_NONET);*/
-
-        xmlChar *tmp =  xmlEncodeEntitiesReentrant(NULL, (xmlChar *)str);
-
-/*        xmlChar *tmp =  (gchar *)xmlStringDecodeEntities(ctxt,
-                                             BAD_CAST str,
-                                             XML_SUBSTITUTE_REF
-                                             & XML_SUBSTITUTE_PEREF,
-                                             0,
-                                             0,
-                                             0);
-
-        newstr = g_strdup(tmp);
-        xmlFree(tmp);
-        xmlFreeParserCtxt(ctxt);
-        return newstr;*/
-        return (gchar *)tmp;
+	xmlChar *tmp;
+
+	g_return_val_if_fail (str != NULL, NULL);
+
+	tmp =  xmlEncodeEntitiesReentrant(NULL, (xmlChar *)str);
+	return (gchar *)tmp;
 }
 
 gchar *
 decode_html_entities(gchar *str)
 {
-        gchar *newstr;
-        g_return_val_if_fail (str != NULL, NULL);
-
-        xmlParserCtxtPtr ctxt = xmlNewParserCtxt();
-        xmlCtxtUseOptions(ctxt,   XML_PARSE_RECOVER
-                                | XML_PARSE_NOENT
-                                | XML_PARSE_NOERROR
-                                | XML_PARSE_NONET);
-
-        xmlChar *tmp =  xmlStringDecodeEntities(ctxt,
-                                             BAD_CAST str,
-                                             XML_SUBSTITUTE_REF
-                                             & XML_SUBSTITUTE_PEREF,
-                                             0,
-                                             0,
-                                             0);
-
-        newstr = g_strdup((gchar *)tmp);
-        xmlFree(tmp);
-        xmlFreeParserCtxt(ctxt);
-        return newstr;
+	gchar *newstr;
+	xmlChar *tmp;
+	xmlParserCtxtPtr ctxt = xmlNewParserCtxt();
+
+	g_return_val_if_fail (str != NULL, NULL);
+
+	xmlCtxtUseOptions(ctxt,   XML_PARSE_RECOVER
+				| XML_PARSE_NOENT
+				| XML_PARSE_NOERROR
+				| XML_PARSE_NONET);
+
+	tmp =  xmlStringDecodeEntities(ctxt,
+					     BAD_CAST str,
+					     XML_SUBSTITUTE_REF
+					     & XML_SUBSTITUTE_PEREF,
+					     0,
+					     0,
+					     0);
+
+	newstr = g_strdup((gchar *)tmp);
+	xmlFree(tmp);
+	xmlFreeParserCtxt(ctxt);
+	return newstr;
 }
 
 gchar *
 decode_entities(gchar *source)
 {
-        GString *str = g_string_new(NULL);
-        GString *res = g_string_new(NULL);
-        gchar *result;
-        const unsigned char *s;
-        guint len;
-        int in=0, out=0;
-        int state, pos;
-
-        g_string_append(res, source);
+	GString *str = g_string_new(NULL);
+	GString *res = g_string_new(NULL);
+	gchar *result;
+	const unsigned char *s;
+	guint len;
+	int in=0, out=0;
+	int state, pos;
+
+	g_string_append(res, source);
 reent:  s = (const unsigned char *)res->str;
-        len = strlen(res->str);
-        state = 0;
-        pos = 1;
-        g_string_truncate(str, 0);
-        while (*s != 0 || len) {
-                if (state) {
-                        if (*s==';') {
-                                state = 2; //entity found
-                                out = pos;
-                                break;
-                        } else {
-                                g_string_append_c(str, *s);
-                        }
-                }
-                if (*s=='&') {
-                        in = pos-1;
-                        state = 1;
-                }
-                s++;
-                pos++;
-                len--;
-        }
-        if (state == 2) {
-                htmlEntityDesc *my = (htmlEntityDesc *)htmlEntityLookup((xmlChar *)str->str);
-                if (my) {
-                        g_string_erase(res, in, out-in);
-                        g_string_insert_unichar(res, in, my->value);
-                        gchar *result = res->str;
-                        g_string_free(res, FALSE);
-                        res = g_string_new(NULL);
-                        g_string_append(res, result);
-                        goto reent;
-                }
-        }
-        result = res->str;
-        g_string_free(res, FALSE);
-        return result;
+	len = strlen(res->str);
+	state = 0;
+	pos = 1;
+	g_string_truncate(str, 0);
+	while (*s != 0 || len) {
+		if (state) {
+			if (*s==';') {
+				state = 2; //entity found
+				out = pos;
+				break;
+			} else {
+				g_string_append_c(str, *s);
+			}
+		}
+		if (*s=='&') {
+			in = pos-1;
+			state = 1;
+		}
+		s++;
+		pos++;
+		len--;
+	}
+	if (state == 2) {
+		htmlEntityDesc *my = (htmlEntityDesc *)htmlEntityLookup((xmlChar *)str->str);
+		if (my) {
+			g_string_erase(res, in, out-in);
+			g_string_insert_unichar(res, in, my->value);
+			result = res->str;
+			g_string_free(res, FALSE);
+			res = g_string_new(NULL);
+			g_string_append(res, result);
+			goto reent;
+		}
+	}
+	result = res->str;
+	g_string_free(res, FALSE);
+	return result;
 }
 
 gchar *
 decode_utf8_entities(gchar *str)
 {
-        int inlen, utf8len;
-        gchar *buffer;
-        g_return_val_if_fail (str != NULL, NULL);
-
-        inlen = strlen(str);
-        utf8len = 5*inlen+1;
-        buffer = g_malloc0(utf8len);
-        UTF8ToHtml((unsigned char *)buffer, &utf8len, (unsigned char *)str, &inlen);
-        return buffer;
+	int inlen, utf8len;
+	gchar *buffer;
+	g_return_val_if_fail (str != NULL, NULL);
+
+	inlen = strlen(str);
+	utf8len = 5*inlen+1;
+	buffer = g_malloc0(utf8len);
+	UTF8ToHtml((unsigned char *)buffer, &utf8len, (unsigned char *)str, &inlen);
+	return buffer;
 }
 
diff --git a/src/parser.h b/src/parser.h
index f6c9aa1..6f15946 100644
--- a/src/parser.h
+++ b/src/parser.h
@@ -1,5 +1,5 @@
 /*  Evoution RSS Reader Plugin
- *  Copyright (C) 2007-2008 Lucian Langa <cooly gnome eu org> 
+ *  Copyright (C) 2007-2009 Lucian Langa <cooly gnome eu org> 
  *  
  *  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
@@ -21,21 +21,29 @@
 
 gchar *update_channel(RDF *r);
 xmlDoc *rss_html_url_decode(const char *html, int len);
-char *layer_find (xmlNodePtr node, char *match, char *fail);
-char *layer_find_innerelement (xmlNodePtr node, char *match, char *el, char *fail);
-gchar *layer_find_innerhtml (xmlNodePtr node, char *match, char *submatch, char *fail);
-xmlNodePtr layer_find_pos (xmlNodePtr node, char *match, char *submatch);
-char *layer_find_tag (xmlNodePtr node, char *match, char *fail);
-char * layer_find_url (xmlNodePtr node, char *match, char *fail);
+const char *layer_find (xmlNodePtr node, const char *match, const char *fail);
+const char *layer_find_innerelement (xmlNodePtr node, const char *match, const char *el, const char *fail);
+gchar *layer_find_innerhtml (xmlNodePtr node, const char *match, const char *submatch, gchar *fail);
+xmlNodePtr layer_find_pos (xmlNodePtr node, const char *match, const char *submatch);
+const char *layer_find_tag (xmlNodePtr node, const char *match, const char *fail);
+char *layer_find_url (xmlNodePtr node, char *match, char *fail);
 char *layer_find_tag_prop (xmlNodePtr node, char *match, char *search, char *fail);
+const char *layer_find_ns_tag(xmlNodePtr node, const char *nsmatch, const char *match, const char *fail);
 gchar *encode_html_entities(gchar *source);
 gchar *decode_entities(gchar *source);
-GList *layer_find_all (xmlNodePtr node, char *match, char *fail);
+GList *layer_find_all (xmlNodePtr node, const char *match, const 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);
+xmlNode *html_find (xmlNode *node, gchar *match);
+void html_set_base(xmlNode *doc, char *base, const char *tag, const char *prop, char *basehref);
+gchar *content_rss(xmlNode *node, gchar *fail);
+gchar *media_rss(xmlNode *node, gchar *search, gchar *fail);
+gchar *dublin_core_rss(xmlNode *node, gchar *fail);
+void syndication_rss(void);
+gchar *wfw_rss(xmlNode *node, gchar *fail);
 
 #endif /*__RSS_H__*/
 
diff --git a/src/rss-config-factory.c b/src/rss-config-factory.c
index cb36d72..ff386d5 100644
--- a/src/rss-config-factory.c
+++ b/src/rss-config-factory.c
@@ -189,7 +189,6 @@ accept_cookies_cb(GtkWidget *widget, GtkWidget *data)
 	/* Save the new setting to gconf */
 	gconf_client_set_bool (rss_gconf, GCONF_KEY_ACCEPT_COOKIES, active, NULL);
 	gtk_widget_set_sensitive(data, active);
-	
 }
 
 static void
@@ -314,11 +313,12 @@ construct_list(gpointer key, gpointer value, gpointer user_data)
 {
         GtkListStore  *store = user_data;
         GtkTreeIter    iter;
+	gchar *full_name, *name, *full_path;
 
         gtk_list_store_append (store, &iter);
-	gchar *full_name = lookup_feed_folder(key);
-	gchar *name = g_path_get_basename(full_name);
-	gchar *full_path = g_strconcat(lookup_main_folder(), "/", full_name, NULL);
+	full_name = lookup_feed_folder(key);
+	name = g_path_get_basename(full_name);
+	full_path = g_strconcat(lookup_main_folder(), "/", full_name, NULL);
         gtk_list_store_set (store, &iter,
                 0, g_hash_table_lookup(rf->hre, lookup_key(key)),
                 1, name,
@@ -374,24 +374,39 @@ add_feed *
 build_dialog_add(gchar *url, gchar *feed_text)
 {
         char *gladefile;
-  	add_feed *feed = g_new0(add_feed, 1);
-  	feed->enabled = TRUE;
+	add_feed *feed = g_new0(add_feed, 1);
 	GladeXML  *gui;
 	gchar *flabel = NULL;
-  	gboolean fhtml = FALSE;
-  	gboolean del_unread = FALSE;
-  	guint del_feed = 0;
+	gchar *fname;
+	gboolean fhtml = FALSE;
+	gboolean del_unread = FALSE;
+	gboolean auth_enabled;
+	guint del_feed = 0;
 	gpointer key = NULL;
 	GtkAccelGroup *accel_group = gtk_accel_group_new ();
+	GtkWidget *ok, *cancel;
+	GtkWidget *dialog1, *child;
+	GtkWidget *authuser, *authpass;
+	GtkWidget *adv_options, *entry1, *entry2, *feed_name;
+	GtkToggleButton *useauth;
+	GtkWidget *feed_name_label, *location_button, *location_label;
+	GtkWidget *combobox1, *checkbutton1, *checkbutton2, *checkbutton3;
+	GtkWidget *radiobutton1, *radiobutton2, *radiobutton3;
+	GtkWidget *radiobutton4, *radiobutton5, *radiobutton6, *radiobutton7;
+	GtkWidget *ttl_value;
+	GtkWidget *spinbutton1, *spinbutton2;
+	GtkWidget *checkbutton4;
+        GtkImage *image;
 
+  	feed->enabled = TRUE;
         gladefile = g_build_filename (EVOLUTION_GLADEDIR,
                                       "rss-ui.glade",
                                       NULL);
         gui = glade_xml_new (gladefile, NULL, GETTEXT_PACKAGE);
         g_free (gladefile);
 
-        GtkWidget *dialog1 = (GtkWidget *)glade_xml_get_widget (gui, "feed_dialog");
-        GtkWidget *child = (GtkWidget *)glade_xml_get_widget (gui, "dialog-vbox9");
+	dialog1 = (GtkWidget *)glade_xml_get_widget (gui, "feed_dialog");
+	child = (GtkWidget *)glade_xml_get_widget (gui, "dialog-vbox9");
 //	gtk_widget_show(dialog1);
 //  	gtk_window_set_keep_above(GTK_WINDOW(dialog1), FALSE);
  	if (url != NULL)
@@ -401,9 +416,8 @@ build_dialog_add(gchar *url, gchar *feed_text)
 //  	gtk_window_set_modal (GTK_WINDOW (dialog1), FALSE);
 
 	
-        GtkWidget *adv_options = (GtkWidget *)glade_xml_get_widget (gui, "adv_options");
-
-        GtkWidget *entry1 = (GtkWidget *)glade_xml_get_widget (gui, "url_entry");
+        adv_options = (GtkWidget *)glade_xml_get_widget (gui, "adv_options");
+        entry1 = (GtkWidget *)glade_xml_get_widget (gui, "url_entry");
   	//editing
   	if (url != NULL) {
   		key = lookup_key(feed_text);
@@ -430,57 +444,57 @@ build_dialog_add(gchar *url, gchar *feed_text)
   	}
   	feed->validate = 1;
 
-        GtkWidget *entry2 = (GtkWidget *)glade_xml_get_widget (gui, "entry2");
-        GtkWidget *feed_name = (GtkWidget *)glade_xml_get_widget (gui, "feed_name");
+        entry2 = (GtkWidget *)glade_xml_get_widget (gui, "entry2");
+        feed_name = (GtkWidget *)glade_xml_get_widget (gui, "feed_name");
 	if (url != NULL) {
 		flabel = g_build_path("/", 
 				lookup_main_folder(),
 				lookup_feed_folder(feed_text),
 				NULL);
 		gtk_label_set_text(GTK_LABEL(entry2), flabel);
-		gchar *fname = g_path_get_basename(lookup_feed_folder(feed_text));
+		fname = g_path_get_basename(lookup_feed_folder(feed_text));
 		gtk_entry_set_text(GTK_ENTRY(feed_name), fname);
 		g_free(fname);
 		gtk_widget_show(feed_name);
-        	GtkWidget *feed_name_label = (GtkWidget *)glade_xml_get_widget (gui, "feed_name_label");
+        	feed_name_label = (GtkWidget *)glade_xml_get_widget (gui, "feed_name_label");
 		gtk_widget_show(feed_name_label);
-        	GtkWidget *location_button = (GtkWidget *)glade_xml_get_widget (gui, "location_button");
+        	location_button = (GtkWidget *)glade_xml_get_widget (gui, "location_button");
 		gtk_widget_show(location_button);
-        	GtkWidget *location_label = (GtkWidget *)glade_xml_get_widget (gui, "location_label");
+        	location_label = (GtkWidget *)glade_xml_get_widget (gui, "location_label");
 		gtk_widget_show(location_label);
         	gtk_label_set_use_markup(GTK_LABEL(entry2), 1);
   	} else
 		gtk_label_set_text(GTK_LABEL(entry2), flabel);
 
-	GtkWidget *combobox1 = (GtkWidget *)glade_xml_get_widget (gui, "combobox1");
+	combobox1 = (GtkWidget *)glade_xml_get_widget (gui, "combobox1");
 	gtk_combo_box_set_active(GTK_COMBO_BOX(combobox1), 0);
 
-	GtkWidget *checkbutton1 = (GtkWidget *)glade_xml_get_widget (gui, "html_check");
+	checkbutton1 = (GtkWidget *)glade_xml_get_widget (gui, "html_check");
   	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton1), 1-fhtml);
 
-	GtkWidget *checkbutton2 = (GtkWidget *)glade_xml_get_widget (gui, "enabled_check");
+	checkbutton2 = (GtkWidget *)glade_xml_get_widget (gui, "enabled_check");
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton2), feed->enabled);
 
-	GtkWidget *checkbutton3 = (GtkWidget *)glade_xml_get_widget (gui, "validate_check");
+	checkbutton3 = (GtkWidget *)glade_xml_get_widget (gui, "validate_check");
 	if (url)
         	gtk_widget_set_sensitive(checkbutton3, FALSE);
   	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton3), feed->validate);
 
-	GtkWidget *spinbutton1 = (GtkWidget *)glade_xml_get_widget (gui, "storage_sb1");
-	GtkWidget *spinbutton2 = (GtkWidget *)glade_xml_get_widget (gui, "storage_sb2");
+	spinbutton1 = (GtkWidget *)glade_xml_get_widget (gui, "storage_sb1");
+	spinbutton2 = (GtkWidget *)glade_xml_get_widget (gui, "storage_sb2");
   	if (feed->del_messages)
         	gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbutton1), feed->del_messages);
 	g_signal_connect(spinbutton1, "changed", G_CALLBACK(del_messages_cb), feed);
 
-	GtkWidget *radiobutton1 = (GtkWidget *)glade_xml_get_widget (gui, "storage_rb1");
-	GtkWidget *radiobutton2 = (GtkWidget *)glade_xml_get_widget (gui, "storage_rb2");
-	GtkWidget *radiobutton3 = (GtkWidget *)glade_xml_get_widget (gui, "storage_rb3");
-	GtkWidget *radiobutton7 = (GtkWidget *)glade_xml_get_widget (gui, "storage_rb4");
-	GtkWidget *radiobutton4 = (GtkWidget *)glade_xml_get_widget (gui, "ttl_global");
-	GtkWidget *radiobutton5 = (GtkWidget *)glade_xml_get_widget (gui, "ttl");
-	GtkWidget *radiobutton6 = (GtkWidget *)glade_xml_get_widget (gui, "ttl_disabled");
-	GtkWidget *ttl_value = (GtkWidget *)glade_xml_get_widget (gui, "ttl_value");
-        GtkImage *image = (GtkImage *)glade_xml_get_widget (gui, "image1");
+	radiobutton1 = (GtkWidget *)glade_xml_get_widget (gui, "storage_rb1");
+	radiobutton2 = (GtkWidget *)glade_xml_get_widget (gui, "storage_rb2");
+	radiobutton3 = (GtkWidget *)glade_xml_get_widget (gui, "storage_rb3");
+	radiobutton7 = (GtkWidget *)glade_xml_get_widget (gui, "storage_rb4");
+	radiobutton4 = (GtkWidget *)glade_xml_get_widget (gui, "ttl_global");
+	radiobutton5 = (GtkWidget *)glade_xml_get_widget (gui, "ttl");
+	radiobutton6 = (GtkWidget *)glade_xml_get_widget (gui, "ttl_disabled");
+	ttl_value = (GtkWidget *)glade_xml_get_widget (gui, "ttl_value");
+        image = (GtkImage *)glade_xml_get_widget (gui, "image1");
 	gtk_spin_button_set_range((GtkSpinButton *)ttl_value, 0, (guint)MAX_TTL);
 
 	/*set feed icon*/
@@ -513,7 +527,7 @@ build_dialog_add(gchar *url, gchar *feed_text)
         	gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbutton2), feed->del_days);
 	g_signal_connect(spinbutton2, "changed", G_CALLBACK(del_days_cb), feed);
 
-	GtkWidget *checkbutton4 = (GtkWidget *)glade_xml_get_widget (gui, "storage_unread");
+	checkbutton4 = (GtkWidget *)glade_xml_get_widget (gui, "storage_unread");
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton4), del_unread);
 
        	gtk_spin_button_set_value(GTK_SPIN_BUTTON(ttl_value), feed->ttl);
@@ -534,26 +548,26 @@ build_dialog_add(gchar *url, gchar *feed_text)
 		break;
 	}
 
-	GtkWidget *authuser = (GtkWidget *)glade_xml_get_widget (gui, "auth_user");
-	GtkWidget *authpass = (GtkWidget *)glade_xml_get_widget (gui, "auth_pass");
-	GtkToggleButton *useauth = (GtkToggleButton *)glade_xml_get_widget (gui, "use_auth");
+	authuser = (GtkWidget *)glade_xml_get_widget (gui, "auth_user");
+	authpass = (GtkWidget *)glade_xml_get_widget (gui, "auth_pass");
+	useauth = (GtkToggleButton *)glade_xml_get_widget (gui, "use_auth");
 
 	if (url && read_up(url)) {
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (useauth), 1);
 		gtk_entry_set_text(GTK_ENTRY(authuser), g_hash_table_lookup(rf->hruser, url));
 		gtk_entry_set_text(GTK_ENTRY(authpass), g_hash_table_lookup(rf->hrpass, url));
 	}
-	gboolean auth_enabled = gtk_toggle_button_get_active(useauth);
+	auth_enabled = gtk_toggle_button_get_active(useauth);
 	gtk_widget_set_sensitive(authuser, auth_enabled);
 	gtk_widget_set_sensitive(authpass, auth_enabled);
 	g_signal_connect(useauth, "toggled", G_CALLBACK(disable_widget_cb), gui);
 
-	GtkWidget *ok = (GtkWidget *)glade_xml_get_widget (gui, "ok_button");
+	ok = (GtkWidget *)glade_xml_get_widget (gui, "ok_button");
 	/*Gtk-CRITICAL **: gtk_box_pack: assertion `child->parent == NULL' failed*/
 	gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), ok, GTK_RESPONSE_OK);
 	GTK_WIDGET_SET_FLAGS (ok, GTK_CAN_DEFAULT);
 
-	GtkWidget *cancel = (GtkWidget *)glade_xml_get_widget (gui, "cancel_button");
+	cancel = (GtkWidget *)glade_xml_get_widget (gui, "cancel_button");
 	gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), cancel, GTK_RESPONSE_CANCEL);
 	GTK_WIDGET_SET_FLAGS (cancel, GTK_CAN_DEFAULT);
 
@@ -565,13 +579,13 @@ build_dialog_add(gchar *url, gchar *feed_text)
                               GTK_ACCEL_VISIBLE);
 	gtk_window_add_accel_group (GTK_WINDOW (dialog1), accel_group);
 
-  	feed->fetch_html = fhtml;
+	feed->fetch_html = fhtml;
         feed->dialog = dialog1;
         feed->child = child;
 	feed->gui = gui;
 	if (flabel)
 		g_free(flabel);
-  	return feed;
+	return feed;
 }
 
 void
@@ -592,12 +606,13 @@ actions_dialog_add(add_feed *feed, gchar *url)
 	GtkWidget *spinbutton1 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_sb1");
 	GtkWidget *spinbutton2 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_sb2");
 	GtkWidget *ttl_value = (GtkWidget *)glade_xml_get_widget (feed->gui, "ttl_value");
-  	gboolean fhtml = feed->fetch_html;
+	gboolean fhtml = feed->fetch_html;
+	guint i=0;
 
-  	gint result = gtk_dialog_run(GTK_DIALOG(feed->dialog));
-  	switch (result) {
-    	case GTK_RESPONSE_OK:
-        	feed->feed_url = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry1)));
+	gint result = gtk_dialog_run(GTK_DIALOG(feed->dialog));
+	switch (result) {
+	case GTK_RESPONSE_OK:
+		feed->feed_url = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry1)));
         	fhtml = gtk_toggle_button_get_active (
         	        GTK_TOGGLE_BUTTON (checkbutton1));
         	fhtml ^= 1;
@@ -606,7 +621,6 @@ actions_dialog_add(add_feed *feed, gchar *url)
                 	GTK_TOGGLE_BUTTON(checkbutton2));
         	feed->validate = gtk_toggle_button_get_active(
                 	GTK_TOGGLE_BUTTON(checkbutton3));
-        	guint i=0;
         	while (i<4) {
                 	if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radiobutton1)))
                         	break;
@@ -667,12 +681,13 @@ create_dialog_add(gchar *url, gchar *feed_text)
 gboolean
 store_redraw(GtkTreeView *data)
 {
+	GtkTreeModel *model;
 	g_return_val_if_fail(data, FALSE);
 	g_return_val_if_fail(GTK_WIDGET_REALIZED(data), FALSE);
 
 	if (!store_redrawing) {
 		store_redrawing = 1;
-        	GtkTreeModel *model = gtk_tree_view_get_model (data);
+        	model = gtk_tree_view_get_model (data);
 		gtk_list_store_clear(GTK_LIST_STORE(model));
         	g_hash_table_foreach(rf->hrname, construct_list, model);
 		store_redrawing = 0;
@@ -699,14 +714,16 @@ feeds_dialog_add(GtkDialog *d, gpointer data)
 {
         gchar *text;
         add_feed *feed = create_dialog_add(NULL, NULL);
+	GtkWidget *msg_feeds, *progress;
+
 	if (feed->dialog)
                 gtk_widget_destroy(feed->dialog);
-        GtkWidget *msg_feeds = e_error_new(
+	msg_feeds = e_error_new(
 				GTK_WINDOW(rf->preferences),
 				"org-gnome-evolution-rss:rssmsg",
 				"",
 				NULL);
-	GtkWidget *progress = gtk_progress_bar_new();
+	progress = gtk_progress_bar_new();
         gtk_box_pack_start(
 		GTK_BOX(((GtkDialog *)msg_feeds)->vbox),
 	 	progress,
@@ -757,6 +774,9 @@ destroy_delete(GtkWidget *selector, gpointer user_data)
 static void
 rss_delete_rec (CamelStore *store, CamelFolderInfo *fi, CamelException *ex)
 {
+	int i;
+	GPtrArray *uids;
+
         while (fi) {
                 CamelFolder *folder;
 
@@ -765,8 +785,7 @@ rss_delete_rec (CamelStore *store, CamelFolderInfo *fi, CamelException *ex)
                 if (!(folder = camel_store_get_folder (store, fi->full_name, 0, ex)))
                         return;
 
-                        GPtrArray *uids = camel_folder_get_uids (folder);
-                        int i;
+                        uids = camel_folder_get_uids (folder);
 
                         camel_folder_freeze (folder);
                         for (i = 0; i < uids->len; i++)
@@ -881,15 +900,17 @@ delete_feed_folder_alloc(gchar *old_name)
 {
         FILE *f;
 	gchar *feed_dir = rss_component_peek_base_directory();
+	gchar *feed_file, *orig_name;
+
         if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
             g_mkdir_with_parents (feed_dir, 0755);
-        gchar *feed_file = g_strdup_printf("%s/feed_folders", feed_dir);
+        feed_file = g_strdup_printf("%s/feed_folders", feed_dir);
         g_free(feed_dir);
         f = fopen(feed_file, "wb");
         if (!f)
 		return;
 
-        gchar *orig_name = g_hash_table_lookup(rf->feed_folders, old_name);
+        orig_name = g_hash_table_lookup(rf->feed_folders, old_name);
         if (orig_name)
                 g_hash_table_remove(rf->feed_folders, old_name);
 
@@ -936,11 +957,12 @@ feeds_dialog_disable(GtkDialog *d, gpointer data)
         GtkTreeModel     *model;
         GtkTreeIter       iter;
         gchar *name;
+	gpointer key;
 
         selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(rf->treeview));
         if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
                 gtk_tree_model_get (model, &iter, 3, &name, -1);
-                gpointer key = lookup_key(name);
+                key = lookup_key(name);
                 g_free(name);
                 g_hash_table_replace(rf->hre, g_strdup(key),
                         GINT_TO_POINTER(!g_hash_table_lookup(rf->hre, key)));
@@ -985,7 +1007,7 @@ remove_feed_dialog(gchar *msg)
 		checkbutton1,
                 "clicked",
                 G_CALLBACK(start_check_cb),
-                GCONF_KEY_REMOVE_FOLDER);
+                (gpointer)GCONF_KEY_REMOVE_FOLDER);
   gtk_box_pack_start (
 		GTK_BOX (vbox1),
 		checkbutton1,
@@ -1008,6 +1030,7 @@ feeds_dialog_delete(GtkDialog *d, gpointer data)
         GtkTreeSelection *selection;
         GtkTreeModel     *model;
         GtkTreeIter       iter;
+	GtkWidget *rfd;
         gchar *name;
 
         selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data));
@@ -1015,7 +1038,7 @@ feeds_dialog_delete(GtkDialog *d, gpointer data)
                 && !rf->import) {
                 rf->import = 1;
                 gtk_tree_model_get (model, &iter, 3, &name, -1);
-                GtkWidget *rfd = remove_feed_dialog(name);
+                rfd = remove_feed_dialog(name);
                 gtk_widget_show(rfd);
                 g_signal_connect(rfd, "response", G_CALLBACK(delete_response), data);
                 g_signal_connect(rfd, "destroy", G_CALLBACK(destroy_delete), rfd);
@@ -1029,6 +1052,10 @@ process_dialog_edit(add_feed *feed, gchar *url, gchar *feed_name)
 	gchar *text = NULL;
 	gpointer key = lookup_key(feed_name);
 	gchar *prefix = NULL;
+	hrfeed *saved_feed;
+	gpointer md5;
+	CamelException ex;
+	CamelStore *store = rss_component_peek_local_store();
 
 	GtkWidget *msg_feeds = e_error_new(
 			GTK_WINDOW(rf->preferences),
@@ -1071,9 +1098,9 @@ process_dialog_edit(add_feed *feed, gchar *url, gchar *feed_name)
                                                         _("Feed already exists!"));
                                                 goto out;
 			}
-			hrfeed *saved_feed = save_feed_hash(feed_name);
+			saved_feed = save_feed_hash(feed_name);
                        	remove_feed_hash(feed_name);
-                        gpointer md5 = gen_md5(feed->feed_url);
+                        md5 = gen_md5(feed->feed_url);
 			if (!setup_feed(feed)) {
 				//editing might loose a corectly setup feed
 				//so re-add previous deleted feed
@@ -1112,9 +1139,7 @@ process_dialog_edit(add_feed *feed, gchar *url, gchar *feed_name)
 					NULL);
 				gchar *dir = g_path_get_dirname(a);
 				gchar *b = g_build_path("/", dir, feed->feed_name, NULL);
-				CamelException ex;
 				camel_exception_init (&ex);
-				CamelStore *store = rss_component_peek_local_store();
                                 camel_store_rename_folder (store, a, b, &ex);
                                 if (camel_exception_is_set (&ex)) {
                                         e_error_run(NULL,
@@ -1171,11 +1196,11 @@ feeds_dialog_edit(GtkDialog *d, gpointer data)
                 name = g_hash_table_lookup(rf->hr, key);
                 if (name) {
                         feed = create_dialog_add(name, feed_name);
-                    	if (feed->dialog)
+			if (feed->dialog)
                                 gtk_widget_destroy(feed->dialog);
 			process_dialog_edit(feed, name, feed_name);
 		}
-        	if (feed->feed_url)
+		if (feed->feed_url)
 			store_redraw(GTK_TREE_VIEW(rf->treeview));
 	}
 }
@@ -1192,6 +1217,7 @@ import_dialog_response(GtkWidget *selector, guint response, gpointer user_data)
 gboolean
 import_one_feed(gchar *url, gchar *title, gchar *prefix)
 {
+	guint res;
         add_feed *feed = g_new0(add_feed, 1);
         feed->changed=0;
         feed->add=1;
@@ -1209,7 +1235,7 @@ import_one_feed(gchar *url, gchar *title, gchar *prefix)
                                 _("Feed already exists!"));
                return FALSE;
         }
-        guint res = setup_feed(feed);
+	res = setup_feed(feed);
         d(g_print("feed imported:%d\n", res));
         g_free(feed->feed_url);
         g_free(feed->feed_name);
@@ -1228,20 +1254,20 @@ iterate_import_file(xmlNode *src, gchar **url, xmlChar **title, guint type)
 	*title = NULL;
 
 	if (type == 0) {
-        	src = html_find(src, "outline");
-        	*url = (gchar *)xmlGetProp(src, (xmlChar *)"xmlUrl");
+		src = html_find(src, (gchar *)"outline");
+		*url = (gchar *)xmlGetProp(src, (xmlChar *)"xmlUrl");
 		*title = xmlGetProp(src, (xmlChar *)"title");
 		if (!(*title = xmlGetProp(src, (xmlChar *)"title")))
 			*title = xmlGetProp(src, (xmlChar *)"text");
 	} else if (type == 1) {
 		xmlNode *my;
-		src = html_find(src, "member");
+		src = html_find(src, (gchar *)"member");
 		my = layer_find_pos(src, "member", "Agent");
 		*title = xmlCharStrdup(layer_find(my, "name", NULL));
-		my =  html_find(my, "Document");
+		my =  html_find(my, (gchar *)"Document");
 		*url =  (gchar *)xmlGetProp(my, (xmlChar *)"about");
 		if (!*url) {
-			my =  html_find(my, "channel");
+			my =  html_find(my, (gchar *)"channel");
 			*url =  (gchar *)xmlGetProp(my, (xmlChar *)"about");
 		}
 	}
@@ -1249,6 +1275,8 @@ iterate_import_file(xmlNode *src, gchar **url, xmlChar **title, guint type)
 	
 }
 
+void import_opml(gchar *file);
+
 void
 import_opml(gchar *file)
 {
@@ -1258,9 +1286,11 @@ import_opml(gchar *file)
         guint current = 0;
 	guint type = 0; //file type
         gchar *what = NULL;
+	gchar *msg, *tmp;
         GtkWidget *import_dialog = NULL;
         GtkWidget *import_label;
         GtkWidget *import_progress;
+	float fr;
 
         xmlNode *src = (xmlNode *)xmlParseFile (file);
 	xmlNode *doc = NULL;
@@ -1273,7 +1303,7 @@ import_opml(gchar *file)
 		goto out;
 	}
         doc = src;
-        gchar *msg = g_strdup(_("Importing feeds..."));
+        msg = g_strdup(_("Importing feeds..."));
         import_dialog = e_error_new(
 		GTK_WINDOW(rf->preferences),
 		"shell:importing",
@@ -1370,7 +1400,7 @@ import_opml(gchar *file)
 				if (last && strcmp(last, ".")) {
 					g_print("retract:%s\n", last);
 					size = strstr(root, last)-root-1;
-					gchar *tmp = root;
+					tmp = root;
 					if (size > 0)
 						root = g_strndup(root, size);
 					else
@@ -1413,7 +1443,7 @@ import_opml(gchar *file)
                         		while (gtk_events_pending ())
                                 		gtk_main_iteration ();
 					current++;
-					float fr = ((current*100)/total);
+					fr = ((current*100)/total);
 					gtk_progress_bar_set_fraction((GtkProgressBar *)import_progress, fr/100);
 					what = g_strdup_printf(_("%2.0f%% done"), fr);
 					gtk_progress_bar_set_text((GtkProgressBar *)import_progress, what);
@@ -1450,7 +1480,7 @@ import_opml(gchar *file)
                         while (gtk_events_pending ())
                                 gtk_main_iteration ();
                         current++;
-                        float fr = ((current*100)/total);
+                        fr = ((current*100)/total);
                         gtk_progress_bar_set_fraction((GtkProgressBar *)import_progress, fr/100);
                         what = g_strdup_printf(_("%2.0f%% done"), fr);
                         gtk_progress_bar_set_text((GtkProgressBar *)import_progress, what);
@@ -1504,11 +1534,17 @@ import_toggle_cb_ena (GtkWidget *widget, gpointer data)
 static void
 decorate_import_fs (gpointer data)
 {
+	GtkFileFilter *file_filter = gtk_file_filter_new ();
+        GtkFileFilter *filter = gtk_file_filter_new ();
+        GtkWidget *vbox1;
+        GtkWidget *checkbutton1;
+        GtkWidget *checkbutton2;
+        GtkWidget *checkbutton3;
+
         gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (data), TRUE);
         gtk_dialog_set_default_response (GTK_DIALOG (data), GTK_RESPONSE_OK);
         gtk_file_chooser_set_local_only (data, FALSE);
 
-        GtkFileFilter *file_filter = gtk_file_filter_new ();
         gtk_file_filter_add_pattern (GTK_FILE_FILTER(file_filter), "*");
         gtk_file_filter_set_name (GTK_FILE_FILTER(file_filter), _("All Files"));
         gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (data),
@@ -1529,17 +1565,10 @@ decorate_import_fs (gpointer data)
         gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (data),
                                         GTK_FILE_FILTER(file_filter));
 
-
-        GtkFileFilter *filter = gtk_file_filter_new ();
         gtk_file_filter_add_pattern (filter, "*.opml");
         gtk_file_filter_add_pattern (filter, "*.xml");
         gtk_file_chooser_set_filter(data, filter);
 
-        GtkWidget *vbox1;
-        GtkWidget *checkbutton1;
-        GtkWidget *checkbutton2;
-        GtkWidget *checkbutton3;
-
         vbox1 = gtk_vbox_new (FALSE, 0);
         checkbutton1 = gtk_check_button_new_with_mnemonic (
                                _("Show article's summary"));
@@ -1580,6 +1609,8 @@ decorate_import_fs (gpointer data)
         g_signal_connect(data, "destroy", G_CALLBACK(gtk_widget_destroy), data);
 }
 
+GtkWidget* create_import_dialog (void);
+
 GtkWidget*
 create_import_dialog (void)
 {
@@ -1617,6 +1648,8 @@ create_import_dialog (void)
   return import_file_select;
 }
 
+GtkWidget* create_export_dialog (void);
+
 GtkWidget*
 create_export_dialog (void)
 {
@@ -1706,6 +1739,8 @@ while (info) {
 static void
 construct_opml_line(gpointer key, gpointer value, gpointer user_data)
 {
+	gchar *tmp, *what;
+	float fr;
         gchar *url = g_hash_table_lookup(rf->hr, value);
         gchar *url_esc = g_markup_escape_text(url, strlen(url));
         gchar *key_esc = g_markup_escape_text(key, strlen(key));
@@ -1731,7 +1766,7 @@ out:
 #endif
 
         //gchar *tmp = g_strdup_printf("<outline text=\"%s\" title=\"%s\" type=\"%s\" xmlUrl=\"%s\" htmlUrl=\"%s\"/>\n",
-        gchar *tmp = g_strdup_printf("<outline text=\"%s\" title=\"%s\" type=\"rss\" xmlUrl=\"%s\" htmlUrl=\"%s\"/>\n",
+	tmp = g_strdup_printf("<outline text=\"%s\" title=\"%s\" type=\"rss\" xmlUrl=\"%s\" htmlUrl=\"%s\"/>\n",
                 key_esc, key_esc, url_esc, url_esc);
         if (buffer != NULL)
                 buffer = g_strconcat(buffer, tmp, NULL);
@@ -1739,13 +1774,15 @@ out:
                 buffer = g_strdup(tmp);
         g_free(tmp);
         count++;
-        float fr = ((count*100)/g_hash_table_size(rf->hr));
+	fr = ((count*100)/g_hash_table_size(rf->hr));
         gtk_progress_bar_set_fraction((GtkProgressBar *)user_data, fr/100);
-        gchar *what = g_strdup_printf(_("%2.0f%% done"), fr);
+        what = g_strdup_printf(_("%2.0f%% done"), fr);
         gtk_progress_bar_set_text((GtkProgressBar *)user_data, what);
         g_free(what);
 }
 
+void export_opml(gchar *file);
+
 void
 export_opml(gchar *file)
 {
@@ -1753,6 +1790,7 @@ export_opml(gchar *file)
         GtkWidget *import_label;
         GtkWidget *import_progress;
         char outstr[200];
+	gchar *opml;
         time_t t;
         struct tm *tmp;
         FILE *f;
@@ -1791,7 +1829,7 @@ export_opml(gchar *file)
         t = time(NULL);
         tmp = localtime(&t);
         strftime(outstr, sizeof(outstr), "%a, %d %b %Y %H:%M:%S %z", tmp);
-        gchar *opml = g_strdup_printf("<opml version=\"1.1\">\n<head>\n"
+        opml = g_strdup_printf("<opml version=\"1.1\">\n<head>\n"
                 "<title>Evolution-RSS Exported Feeds</title>\n"
                 "<dateModified>%s</dateModified>\n</head>\n<body>%s</body>\n</opml>\n",
                 outstr,
@@ -1840,11 +1878,13 @@ select_export_response(GtkWidget *selector, guint response, gpointer user_data)
 SoupCookieJar *
 import_cookies(gchar *file)
 {
+	FILE *f;
 	SoupCookieJar *jar = NULL;
 	gchar header[16];
+
 	memset(header, 0, 16);
 	d(g_print("import cookies from %s\n", file));
-	FILE *f = fopen(file, "r");
+	f = fopen(file, "r");
 	if (f) {
 		fgets(header, 16, f);
 		fclose(f);
@@ -1860,6 +1900,8 @@ import_cookies(gchar *file)
 	return jar;
 }
 
+void inject_cookie(SoupCookie *cookie, GtkProgressBar *progress);
+
 void
 inject_cookie(SoupCookie *cookie, GtkProgressBar *progress)
 {
@@ -1880,12 +1922,14 @@ inject_cookie(SoupCookie *cookie, GtkProgressBar *progress)
 void
 process_cookies(SoupCookieJar *jar)
 {
+	GSList *list = NULL;
+        gchar *msg = g_strdup(_("Importing cookies..."));
+	GtkWidget *import_dialog, *import_label, *import_progress;
+
 	ccurrent = 0;
 	ctotal = 0;
-	GSList *list = NULL;
 	list = soup_cookie_jar_all_cookies(jar);
-        gchar *msg = g_strdup(_("Importing cookies..."));
-        GtkWidget *import_dialog = e_error_new(
+	import_dialog = e_error_new(
 			GTK_WINDOW(rf->preferences),
 			"shell:importing",
 			msg,
@@ -1896,8 +1940,8 @@ process_cookies(SoupCookieJar *jar)
 		"response",
 		G_CALLBACK(import_dialog_response),
 		NULL);
-        GtkWidget *import_label = gtk_label_new(_("Please wait"));
-        GtkWidget *import_progress = gtk_progress_bar_new();
+	import_label = gtk_label_new(_("Please wait"));
+	import_progress = gtk_progress_bar_new();
         gtk_box_pack_start(
 		GTK_BOX(((GtkDialog *)import_dialog)->vbox),
                 import_label,
@@ -1984,10 +2028,11 @@ create_import_cookies_dialog (void)
 void
 decorate_import_cookies_fs (gpointer data)
 {
+        GtkFileFilter *file_filter = gtk_file_filter_new ();
+        GtkFileFilter *filter = gtk_file_filter_new ();
         gtk_dialog_set_default_response (GTK_DIALOG (data), GTK_RESPONSE_OK);
         gtk_file_chooser_set_local_only (data, FALSE);
 
-        GtkFileFilter *file_filter = gtk_file_filter_new ();
         gtk_file_filter_add_pattern (GTK_FILE_FILTER(file_filter), "*");
         gtk_file_filter_set_name (GTK_FILE_FILTER(file_filter), _("All Files"));
         gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (data),
@@ -2009,7 +2054,6 @@ decorate_import_cookies_fs (gpointer data)
                                         GTK_FILE_FILTER(file_filter));
 
 
-        GtkFileFilter *filter = gtk_file_filter_new ();
         gtk_file_filter_add_pattern (filter, "*.txt");
         gtk_file_filter_add_pattern (filter, "*.sqlite");
         gtk_file_chooser_set_filter(data, filter);
@@ -2029,11 +2073,13 @@ import_cookies_cb (GtkWidget *widget, gpointer data)
 static void
 decorate_export_fs (gpointer data)
 {
+        GtkFileFilter *file_filter = gtk_file_filter_new ();
+        GtkFileFilter *filter = gtk_file_filter_new ();
+
         gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (data), TRUE);
         gtk_dialog_set_default_response (GTK_DIALOG (data), GTK_RESPONSE_OK);
         gtk_file_chooser_set_local_only (data, FALSE);
 
-        GtkFileFilter *file_filter = gtk_file_filter_new ();
         gtk_file_filter_add_pattern (GTK_FILE_FILTER(file_filter), "*");
         gtk_file_filter_set_name (GTK_FILE_FILTER(file_filter), _("All Files"));
         gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (data),
@@ -2055,7 +2101,6 @@ decorate_export_fs (gpointer data)
                                         GTK_FILE_FILTER(file_filter));
 
 
-        GtkFileFilter *filter = gtk_file_filter_new ();
         gtk_file_filter_add_pattern (filter, "*.opml");
         gtk_file_filter_add_pattern (filter, "*.xml");
         gtk_file_chooser_set_filter(data, filter);
@@ -2098,25 +2143,26 @@ destroy_ui_data (gpointer data)
 {
         UIData *ui = (UIData *) data;
 
-        if (!ui)
-                return;
+	g_return_if_fail(ui != NULL);
 
         g_object_unref (ui->xml);
         g_object_unref (ui->gconf);
         g_free (ui);
 }
 
+GtkWidget *e_plugin_lib_get_configure_widget (EPlugin *epl);
+
 GtkWidget *
 e_plugin_lib_get_configure_widget (EPlugin *epl)
 {
 	GtkListStore  *store;
         GtkTreeIter iter;
-        GtkWidget *hbox;
-	guint i;
-
+        GtkWidget *hbox, *combo;
+	GtkCellRenderer *renderer;
+	guint i, render;
         UIData *ui = g_new0 (UIData, 1);
-
         char *gladefile;
+	gdouble adj;
 
         gladefile = g_build_filename (EVOLUTION_GLADEDIR,
                         "rss-html-rendering.glade",
@@ -2126,9 +2172,9 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 
 
 	ui->combobox = glade_xml_get_widget(ui->xml, "hbox1");
-        GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
+	renderer = gtk_cell_renderer_text_new ();
         store = gtk_list_store_new(1, G_TYPE_STRING);
-        GtkWidget *combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
+	combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
         for (i=0;i<3;i++) {
                 gtk_list_store_append(store, &iter);
                 gtk_list_store_set(store, &iter, 0, _(engines[i].label), -1);
@@ -2137,7 +2183,7 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
         gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
                                     "text", 0,
                                     NULL);
-        guint render = GPOINTER_TO_INT(gconf_client_get_int(rss_gconf,
+        render = GPOINTER_TO_INT(gconf_client_get_int(rss_gconf,
                                     GCONF_KEY_HTML_RENDER,
                                     NULL));
 
@@ -2178,33 +2224,33 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 	ui->check = glade_xml_get_widget(ui->xml, "enable_java");
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ui->check),
         	gconf_client_get_bool(rss_gconf, GCONF_KEY_HTML_JAVA, NULL));
-	g_signal_connect(ui->check, 
-		"clicked", 
-		G_CALLBACK(start_check_cb), 
-		GCONF_KEY_HTML_JAVA);
+	g_signal_connect(ui->check,
+		"clicked",
+		G_CALLBACK(start_check_cb),
+		(gpointer)GCONF_KEY_HTML_JAVA);
 
 	ui->check = glade_xml_get_widget(ui->xml, "image_resize");
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ui->check),
         	gconf_client_get_bool(rss_gconf, GCONF_KEY_IMAGE_RESIZE, NULL));
-	g_signal_connect(ui->check, 
-		"clicked", 
-		G_CALLBACK(start_check_cb), 
-		GCONF_KEY_IMAGE_RESIZE);
+	g_signal_connect(ui->check,
+		"clicked",
+		G_CALLBACK(start_check_cb),
+		(gpointer)GCONF_KEY_IMAGE_RESIZE);
 
 	ui->check = glade_xml_get_widget(ui->xml, "enable_js");
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ui->check),
         	gconf_client_get_bool(rss_gconf, GCONF_KEY_HTML_JS, NULL));
-	g_signal_connect(ui->check, 
-		"clicked", 
-		G_CALLBACK(start_check_cb), 
-		GCONF_KEY_HTML_JS);
+	g_signal_connect(ui->check,
+		"clicked",
+		G_CALLBACK(start_check_cb),
+		(gpointer)GCONF_KEY_HTML_JS);
 
 	ui->check = glade_xml_get_widget(ui->xml, "accept_cookies");
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ui->check),
         	gconf_client_get_bool(rss_gconf, GCONF_KEY_ACCEPT_COOKIES, NULL));
-	g_signal_connect(ui->check, 
-		"clicked", 
-		G_CALLBACK(accept_cookies_cb), 
+	g_signal_connect(ui->check,
+		"clicked",
+		G_CALLBACK(accept_cookies_cb),
 		ui->import);
 	ui->import = glade_xml_get_widget(ui->xml, "import_cookies");
 	//we have to have ui->import looked up
@@ -2217,12 +2263,12 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 #endif
 
 	ui->nettimeout = glade_xml_get_widget(ui->xml, "nettimeout");
-  	gdouble adj = gconf_client_get_float(rss_gconf, GCONF_KEY_NETWORK_TIMEOUT, NULL);
+	adj = gconf_client_get_float(rss_gconf, GCONF_KEY_NETWORK_TIMEOUT, NULL);
 	if (adj < NETWORK_MIN_TIMEOUT) {
 		adj = 60;
-    		gconf_client_set_float (rss_gconf, GCONF_KEY_NETWORK_TIMEOUT, adj, NULL);
+		gconf_client_set_float (rss_gconf, GCONF_KEY_NETWORK_TIMEOUT, adj, NULL);
 	}
-  	if (adj)
+	if (adj)
 		gtk_spin_button_set_value((GtkSpinButton *)ui->nettimeout, adj);
 	g_signal_connect(ui->nettimeout, "changed", G_CALLBACK(network_timeout_cb), ui->nettimeout);
 	g_signal_connect(ui->nettimeout, "value-changed", G_CALLBACK(network_timeout_cb), ui->nettimeout);
@@ -2235,22 +2281,21 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 	g_signal_connect(ui->check, 
 		"clicked", 
 		G_CALLBACK(start_check_cb), 
-		GCONF_KEY_STATUS_ICON);
+		(gpointer)GCONF_KEY_STATUS_ICON);
 	ui->check = glade_xml_get_widget(ui->xml, "blink_icon");
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ui->check),
         	gconf_client_get_bool(rss_gconf, GCONF_KEY_BLINK_ICON, NULL));
 	g_signal_connect(ui->check, 
 		"clicked", 
 		G_CALLBACK(start_check_cb), 
-		GCONF_KEY_BLINK_ICON);
+		(gpointer)GCONF_KEY_BLINK_ICON);
 	ui->check = glade_xml_get_widget(ui->xml, "feed_icon");
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ui->check),
         	gconf_client_get_bool(rss_gconf, GCONF_KEY_FEED_ICON, NULL));
-	g_signal_connect(ui->check, 
-		"clicked", 
-		G_CALLBACK(start_check_cb), 
-		GCONF_KEY_FEED_ICON);
-	
+	g_signal_connect(ui->check,
+		"clicked",
+		G_CALLBACK(start_check_cb),
+		(gpointer)GCONF_KEY_FEED_ICON);
 
         ui->gconf = gconf_client_get_default ();
 	hbox = gtk_vbox_new (FALSE, 0);
@@ -2268,46 +2313,63 @@ struct _EConfigTargetRSS
 	gchar *label;
 } ER;
 
+void rss_folder_factory_abort (EPlugin *epl, EConfigTarget *target);
+
 void rss_folder_factory_abort (EPlugin *epl, EConfigTarget *target)
 {
 	d(g_print("abort"));
 }
 
+void rss_folder_factory_commit (EPlugin *epl, EConfigTarget *target);
+
 void rss_folder_factory_commit (EPlugin *epl, EConfigTarget *target)
 {
 	const gchar *user = NULL, *pass = NULL;
+	GtkWidget *entry1, *checkbutton1, *checkbutton2;
+	GtkWidget *checkbutton3, *checkbutton4;
+	GtkWidget *radiobutton1, *radiobutton2, *radiobutton3;
+	GtkWidget *radiobutton4, *radiobutton5, *radiobutton6;
+	GtkWidget *radiobutton7;
+	GtkWidget *spinbutton1, *spinbutton2;
+	GtkWidget *ttl_value, *feed_name_entry;
+	GtkWidget *authuser, *authpass, *useauth;
+	gchar *feed_name;
+	gboolean fhtml, auth_enabled;
+	guint i=0;
+
 	add_feed *feed = (add_feed *)g_object_get_data((GObject *)epl, "add-feed");
 	gchar *url = (gchar *)g_object_get_data((GObject *)epl, "url");
 	gchar *ofolder = (gchar *)g_object_get_data((GObject *)epl, "ofolder");
-	
+
 	EMConfigTargetFolder *targetfolder = (EMConfigTargetFolder *)target->config->target;
 	gchar *main_folder = lookup_main_folder();
 	gchar *folder = targetfolder->folder->full_name;
- 	
+
 	if (folder == NULL
 	|| g_ascii_strncasecmp(folder, main_folder, strlen(main_folder))
 	|| !g_ascii_strcasecmp(folder, main_folder))
 		return;
 
-	GtkWidget *entry1 = (GtkWidget *)glade_xml_get_widget (feed->gui, "url_entry");
-        GtkWidget *checkbutton1 = (GtkWidget *)glade_xml_get_widget (feed->gui, "html_check");
-        GtkWidget *checkbutton2 = (GtkWidget *)glade_xml_get_widget (feed->gui, "enabled_check");
-        GtkWidget *checkbutton3 = (GtkWidget *)glade_xml_get_widget (feed->gui, "validate_check");
-        GtkWidget *checkbutton4 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_unread");
-        GtkWidget *radiobutton1 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_rb1");
-        GtkWidget *radiobutton2 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_rb2");
-        GtkWidget *radiobutton3 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_rb3");
-        GtkWidget *radiobutton7 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_rb4");
-        GtkWidget *radiobutton4 = (GtkWidget *)glade_xml_get_widget (feed->gui, "ttl_global");
-        GtkWidget *radiobutton5 = (GtkWidget *)glade_xml_get_widget (feed->gui, "ttl");
-        GtkWidget *radiobutton6 = (GtkWidget *)glade_xml_get_widget (feed->gui, "ttl_disabled");
-        GtkWidget *spinbutton1 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_sb1");
-        GtkWidget *spinbutton2 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_sb2");
-        GtkWidget *ttl_value = (GtkWidget *)glade_xml_get_widget (feed->gui, "ttl_value");
-        GtkWidget *feed_name_entry = (GtkWidget *)glade_xml_get_widget (feed->gui, "feed_name");
-	gchar *feed_name = g_strdup(gtk_entry_get_text(GTK_ENTRY(feed_name_entry)));
-
-        gboolean fhtml = feed->fetch_html;
+	entry1 = (GtkWidget *)glade_xml_get_widget (feed->gui, "url_entry");
+	checkbutton1 = (GtkWidget *)glade_xml_get_widget (feed->gui, "html_check");
+	checkbutton2 = (GtkWidget *)glade_xml_get_widget (feed->gui, "enabled_check");
+	checkbutton3 = (GtkWidget *)glade_xml_get_widget (feed->gui, "validate_check");
+	checkbutton4 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_unread");
+	radiobutton1 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_rb1");
+	radiobutton2 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_rb2");
+	radiobutton3 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_rb3");
+        radiobutton4 = (GtkWidget *)glade_xml_get_widget (feed->gui, "ttl_global");
+        radiobutton5 = (GtkWidget *)glade_xml_get_widget (feed->gui, "ttl");
+        radiobutton6 = (GtkWidget *)glade_xml_get_widget (feed->gui, "ttl_disabled");
+	radiobutton7 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_rb4");
+	spinbutton1 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_sb1");
+	spinbutton2 = (GtkWidget *)glade_xml_get_widget (feed->gui, "storage_sb2");
+        ttl_value = (GtkWidget *)glade_xml_get_widget (feed->gui, "ttl_value");
+        feed_name_entry = (GtkWidget *)glade_xml_get_widget (feed->gui, "feed_name");
+	feed_name = g_strdup(gtk_entry_get_text(GTK_ENTRY(feed_name_entry)));
+
+
+	fhtml = feed->fetch_html;
 	feed->feed_url = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry1)));
         fhtml = gtk_toggle_button_get_active (
                         GTK_TOGGLE_BUTTON (checkbutton1));
@@ -2315,10 +2377,9 @@ void rss_folder_factory_commit (EPlugin *epl, EConfigTarget *target)
         feed->fetch_html = fhtml;
 	feed->enabled = gtk_toggle_button_get_active(
                         GTK_TOGGLE_BUTTON(checkbutton2));
-                feed->validate = gtk_toggle_button_get_active(
-                        GTK_TOGGLE_BUTTON(checkbutton3));
-                guint i=0;
-                while (i<4) {
+	feed->validate = gtk_toggle_button_get_active(
+			GTK_TOGGLE_BUTTON(checkbutton3));
+	while (i<4) {
                         if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radiobutton1)))
                                 break;
                         i++;
@@ -2330,7 +2391,7 @@ void rss_folder_factory_commit (EPlugin *epl, EConfigTarget *target)
                         i++;
                         if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radiobutton7)))
                                 break;
-                }
+	}
                 feed->del_feed=i;
                 feed->del_unread = gtk_toggle_button_get_active(
                         GTK_TOGGLE_BUTTON(checkbutton4));
@@ -2364,13 +2425,13 @@ void rss_folder_factory_commit (EPlugin *epl, EConfigTarget *target)
 			feed->renamed = 1;
 		process_dialog_edit(feed, url, ofolder);
 	   
-	GtkWidget *authuser = (GtkWidget *)glade_xml_get_widget (feed->gui, "auth_user");
-	GtkWidget *authpass = (GtkWidget *)glade_xml_get_widget (feed->gui, "auth_pass");
-	GtkWidget *useauth = (GtkWidget *)glade_xml_get_widget (feed->gui, "use_auth");
-	
+	authuser = (GtkWidget *)glade_xml_get_widget (feed->gui, "auth_user");
+	authpass = (GtkWidget *)glade_xml_get_widget (feed->gui, "auth_pass");
+	useauth = (GtkWidget *)glade_xml_get_widget (feed->gui, "use_auth");
+
 	user = gtk_entry_get_text(GTK_ENTRY(authuser));
 	pass = gtk_entry_get_text(GTK_ENTRY(authpass));
-	gboolean auth_enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (useauth));
+	auth_enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (useauth));
 
 	if (user)
 		g_hash_table_remove(rf->hruser, url);
@@ -2388,6 +2449,8 @@ void rss_folder_factory_commit (EPlugin *epl, EConfigTarget *target)
 		del_up(url);
 }
 
+GtkWidget *rss_folder_factory (EPlugin *epl, EConfigHookItemFactoryData *data);
+
 GtkWidget *
 rss_folder_factory (EPlugin *epl, EConfigHookItemFactoryData *data)
 {
@@ -2396,7 +2459,9 @@ rss_folder_factory (EPlugin *epl, EConfigHookItemFactoryData *data)
 	gchar *main_folder = lookup_main_folder();
 	gchar *folder = target->folder->full_name;
 	add_feed *feed = NULL;
-	GtkWidget *action_area;
+	GtkWidget *action_area, *ok;
+	GtkAccelGroup *accel_group = gtk_accel_group_new ();
+	gpointer key;
 
 	//filter only rss folders
 	if (folder == NULL
@@ -2405,7 +2470,7 @@ rss_folder_factory (EPlugin *epl, EConfigHookItemFactoryData *data)
                 goto out;
 
 	ofolder = lookup_original_folder(folder);
-	gpointer key = lookup_key(ofolder);
+	key = lookup_key(ofolder);
 	if (!key) {
 		g_free(ofolder);
 		goto out;
@@ -2422,16 +2487,15 @@ rss_folder_factory (EPlugin *epl, EConfigHookItemFactoryData *data)
 		action_area = GTK_DIALOG (feed->dialog)->action_area;
 #endif
 		gtk_widget_hide(action_area);
-		gtk_widget_ref(feed->child);
+		g_object_ref(feed->child);
 		gtk_container_remove (GTK_CONTAINER (feed->child->parent), feed->child);
 		gtk_notebook_remove_page((GtkNotebook *) data->parent, 0);
 		gtk_notebook_insert_page((GtkNotebook *) data->parent, (GtkWidget *) feed->child, NULL, 0);
 		g_object_set_data_full (G_OBJECT (epl), "add-feed", feed, NULL);
 		g_object_set_data_full (G_OBJECT (epl), "url", url, NULL);
 		g_object_set_data_full (G_OBJECT (epl), "ofolder", ofolder, NULL);
-		GtkWidget *ok = (GtkWidget *)glade_xml_get_widget (feed->gui, "ok_button");
+		ok = (GtkWidget *)glade_xml_get_widget (feed->gui, "ok_button");
 
-		GtkAccelGroup *accel_group = gtk_accel_group_new ();
 		gtk_widget_add_accelerator (ok, "activate", accel_group,
                               GDK_Return, (GdkModifierType) 0,
                               GTK_ACCEL_VISIBLE);
@@ -2449,6 +2513,13 @@ out:	return NULL;
  * BONOBO part *
  *=============*/
 
+#if EVOLUTION_VERSION < 22900
+EvolutionConfigControl *
+#else
+GtkWidget *
+#endif
+rss_config_control_new (void);
+
 //kb//
 #if EVOLUTION_VERSION < 22900
 EvolutionConfigControl *
@@ -2458,14 +2529,16 @@ GtkWidget *
 rss_config_control_new (void)
 {
         GtkWidget *control_widget;
+	GtkWidget *button1, *button2, *button3;
         char *gladefile;
 	setupfeed *sf;
-	
 	GtkListStore  *store;
 	GtkTreeIter    iter;
 	GtkCellRenderer *cell;
+	GtkTreeView *treeview;
 	GtkTreeSelection *selection;
 	GtkTreeViewColumn *column;
+	gdouble adj;
 
 	d(g_print("rf->%p\n", rf));
 	sf = g_new0(setupfeed, 1);
@@ -2476,7 +2549,7 @@ rss_config_control_new (void)
         sf->gui = glade_xml_new (gladefile, NULL, GETTEXT_PACKAGE);
         g_free (gladefile);
 
-        GtkTreeView *treeview = (GtkTreeView *)glade_xml_get_widget (sf->gui, "feeds-treeview");
+	treeview = (GtkTreeView *)glade_xml_get_widget (sf->gui, "feeds-treeview");
 	rf->treeview = (GtkWidget *)treeview;
 	sf->treeview = (GtkWidget *)treeview;
 
@@ -2547,13 +2620,13 @@ rss_config_control_new (void)
 			G_CALLBACK(treeview_row_activated), 
 			treeview);
 
-       GtkWidget *button1 = glade_xml_get_widget (sf->gui, "feed-add-button");
+       button1 = glade_xml_get_widget (sf->gui, "feed-add-button");
        g_signal_connect(button1, "clicked", G_CALLBACK(feeds_dialog_add), treeview);
 
-       GtkWidget *button2 = glade_xml_get_widget (sf->gui, "feed-edit-button");
+       button2 = glade_xml_get_widget (sf->gui, "feed-edit-button");
        g_signal_connect(button2, "clicked", G_CALLBACK(feeds_dialog_edit), treeview);
 
-       GtkWidget *button3 = glade_xml_get_widget (sf->gui, "feed-delete-button");
+       button3 = glade_xml_get_widget (sf->gui, "feed-delete-button");
        g_signal_connect(button3, "clicked", G_CALLBACK(feeds_dialog_delete), treeview);
 
 
@@ -2568,7 +2641,7 @@ rss_config_control_new (void)
  	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sf->check1), 
 		gconf_client_get_bool(rss_gconf, GCONF_KEY_REP_CHECK, NULL));
 
-  	gdouble adj = gconf_client_get_float(rss_gconf, GCONF_KEY_REP_CHECK_TIMEOUT, NULL);
+  	adj = gconf_client_get_float(rss_gconf, GCONF_KEY_REP_CHECK_TIMEOUT, NULL);
   	if (adj)
 		gtk_spin_button_set_value((GtkSpinButton *)sf->spin, adj);
 	g_signal_connect(sf->check1, "clicked", G_CALLBACK(rep_check_cb), sf->spin);
@@ -2579,19 +2652,19 @@ rss_config_control_new (void)
 	g_signal_connect(sf->check2, 
 		"clicked", 
 		G_CALLBACK(start_check_cb), 
-		GCONF_KEY_START_CHECK);
+		(gpointer)GCONF_KEY_START_CHECK);
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sf->check3),
         	gconf_client_get_bool(rss_gconf, GCONF_KEY_DISPLAY_SUMMARY, NULL));
 	g_signal_connect(sf->check3, 
 		"clicked", 
 		G_CALLBACK(start_check_cb), 
-		GCONF_KEY_DISPLAY_SUMMARY);
+		(gpointer)GCONF_KEY_DISPLAY_SUMMARY);
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sf->check4),
         	gconf_client_get_bool(rss_gconf, GCONF_KEY_SHOW_COMMENTS, NULL));
 	g_signal_connect(sf->check4, 
 		"clicked", 
 		G_CALLBACK(start_check_cb), 
-		GCONF_KEY_SHOW_COMMENTS);
+		(gpointer)GCONF_KEY_SHOW_COMMENTS);
 
 
 #if (EVOLUTION_VERSION < 21900)		// include devel too
@@ -2684,7 +2757,7 @@ rss_config_control_new (void)
 	g_signal_connect(sf->export, "clicked", G_CALLBACK(export_cb), sf->export);
 
         control_widget = glade_xml_get_widget (sf->gui, "feeds-notebook");
-        gtk_widget_ref (control_widget);
+	g_object_ref (control_widget);
 
         gtk_container_remove (GTK_CONTAINER (control_widget->parent), control_widget);
 
diff --git a/src/rss-config-factory.h b/src/rss-config-factory.h
index dd8de87..d819496 100644
--- a/src/rss-config-factory.h
+++ b/src/rss-config-factory.h
@@ -1,16 +1,16 @@
 /*  Evoution RSS Reader Plugin
- *  Copyright (C) 2007-2008 Lucian Langa <cooly gnome eu org> 
- *  
+ *  Copyright (C) 2007-2008 Lucian Langa <cooly gnome eu org>
+ *
  *  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
- *  the Free Software Foundation; either version 2 of the License, or 
+ *  the Free Software Foundation; either version 2 of the License, or
  *  (at your option) any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
- *  
+ *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
@@ -28,6 +28,26 @@ void delete_feed_folder_alloc(gchar *old_name);
 void rss_delete_folders (CamelStore *store, const char *full_name, CamelException *ex);
 void remove_feed_hash(gpointer name);
 void init_rss_prefs(void);
+void accept_cookies_cb(GtkWidget *widget, GtkWidget *data);
+void del_messages_cb (GtkWidget *widget, add_feed *data);
+void disable_widget_cb(GtkWidget *widget, GladeXML *data);
+add_feed *build_dialog_add(gchar *url, gchar *feed_text);
+void actions_dialog_add(add_feed *feed, gchar *url);
+add_feed *create_dialog_add(gchar *url, gchar *feed_text);
+void destroy_feed_hash_content(hrfeed *s);
+hrfeed *save_feed_hash(gpointer name);
+void restore_feed_hash(gpointer name, hrfeed *s);
+void feeds_dialog_disable(GtkDialog *d, gpointer data);
+GtkWidget *remove_feed_dialog(gchar *msg);
+void feeds_dialog_delete(GtkDialog *d, gpointer data);
+void process_dialog_edit(add_feed *feed, gchar *url, gchar *feed_name);
+gboolean import_one_feed(gchar *url, gchar *title, gchar *prefix);
+xmlNode *iterate_import_file(xmlNode *src, gchar **url, xmlChar **title, guint type);
+#if LIBSOUP_VERSION >= 2026000
+SoupCookieJar *import_cookies(gchar *file);
+#endif
+void process_cookies(SoupCookieJar *jar);
+GtkWidget *create_import_cookies_dialog (void);
 
 #endif /*__RSS_CONFIG_FACTORY_H_*/
 
diff --git a/src/rss-icon-factory.c b/src/rss-icon-factory.c
index ee1f3c9..669fd66 100644
--- a/src/rss-icon-factory.c
+++ b/src/rss-icon-factory.c
@@ -21,8 +21,8 @@
 #include <rss.h>
 
 typedef struct {
-        char *stock_id;
-        char *icon;
+        const char *stock_id;
+        const char *icon;
 } RssStockIcon;
 
 static RssStockIcon stock_icons [] = {
diff --git a/src/rss-icon-factory.h b/src/rss-icon-factory.h
index 2de3cc1..9845a55 100644
--- a/src/rss-icon-factory.h
+++ b/src/rss-icon-factory.h
@@ -26,3 +26,5 @@
 #define RSS_MAIN_FILE "rss-24.png"
 
 void rss_build_stock_images(void);
+void init_rss_builtin_images(void);
+
diff --git a/src/rss.c b/src/rss.c
index 5374f7b..8a702b6 100644
--- a/src/rss.c
+++ b/src/rss.c
@@ -1,16 +1,16 @@
 /*  Evoution RSS Reader Plugin
- *  Copyright (C) 2007-2009 Lucian Langa <cooly gnome eu org> 
- *  
+ *  Copyright (C) 2007-2009 Lucian Langa <cooly gnome eu org>
+ *
  *  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
- *  the Free Software Foundation; either version 2 of the License, or 
+ *  the Free Software Foundation; either version 2 of the License, or
  *  (at your option) any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
- *  
+ *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
@@ -81,7 +81,7 @@ int rss_verbose_debug = 0;
 #ifndef _WIN32
 #include <sys/wait.h>
 #endif
-#include <fcntl.h> 
+#include <fcntl.h>
 #include <stdlib.h>
 
 #ifndef O_BINARY
@@ -191,7 +191,6 @@ GHashTable *icons = NULL;
 gchar *pixfile;
 char *pixfilebuf;
 gsize pixfilelen;
-extern int xmlSubstituteEntitiesDefaultValue;
 #if (DATASERVER_VERSION >= 2023001)
 extern EProxy *proxy;
 #endif
@@ -214,9 +213,9 @@ GConfClient *rss_gconf;
 
 gboolean inhibit_read = FALSE;	//prevent mail selection when deleting folder
 gboolean delete_op = FALSE;	//delete in progress
-gchar *commstream = NULL; 	//global comments stream
-guint commcnt = 0; 	//global number of comments
-gchar *commstatus = "";
+gchar *commstream = NULL;	//global comments stream
+guint commcnt = 0;	//global number of comments
+const gchar *commstatus = "";
 GSList *comments_session = NULL;	//comments to be fetched queue
 guint32 frame_colour;
 guint32 content_colour;
@@ -226,14 +225,12 @@ gboolean gecko_ready = FALSE;
 gboolean browser_fetching = 0; //mycall event could be triggered many times in first step (fetching)
 gint browser_fill = 0;	//how much data currently written to browser
 
-gboolean setup_feed(add_feed *feed);
 gchar *process_feed(RDF *r);
 void display_feed(RDF *r);
 gchar *display_doc (RDF *r);
 gchar *display_comments (RDF *r);
 void check_folders(void);
 CamelMimePart *file_to_message(const char *name);
-void save_gconf_feed(void);
 void check_feed_age(void);
 void get_feed_age(RDF *r, gpointer name);
 static void
@@ -248,7 +245,6 @@ finish_create_image (SoupMessage *msg, gchar *user_data);
 #else
 finish_create_image (SoupSession *soup_sess, SoupMessage *msg, gchar *user_data);
 #endif
-gchar *get_main_folder(void);
 gboolean fetch_one_feed(gpointer key, gpointer value, gpointer user_data);
 gboolean fetch_feed(gpointer key, gpointer value, gpointer user_data);
 gboolean custom_fetch_feed(gpointer key, gpointer value, gpointer user_data);
@@ -335,40 +331,41 @@ rss_error(gpointer key, gchar *name, gchar *error, gchar *emsg)
 {
 	GtkWidget *ed;
 	gchar *msg;
+	gpointer newkey;
 
 	if (name)
-               	msg = g_strdup_printf("\n%s\n%s", name, emsg);
+		msg = g_strdup_printf("\n%s\n%s", name, emsg);
 	else
-		msg = g_strdup(emsg); 
+		msg = g_strdup(emsg);
 
 #if (EVOLUTION_VERSION >= 22200)
-	if (key) { 
+	if (key) {
 		if (!g_hash_table_lookup(rf->error_hash, key)) {
 //			guint activity_id = g_hash_table_lookup(rf->activity, key);
 #if (EVOLUTION_VERSION >= 22900) //kb//
 			EShell *shell;
 			GtkWindow *parent;
 			GList *windows;
-		
+
 			shell = e_shell_get_default ();
 			windows = e_shell_get_watched_windows (shell);
 			parent = (windows != NULL) ? GTK_WINDOW (windows->data) : NULL;
-			
-                	ed  = e_error_new(parent, "org-gnome-evolution-rss:feederr",
-                	             error, msg, NULL);
+
+			ed  = e_error_new(parent, "org-gnome-evolution-rss:feederr",
+			             error, msg, NULL);
 #else
-                	ed  = e_error_new(NULL, "org-gnome-evolution-rss:feederr",
-                	             error, msg, NULL);
+			ed  = e_error_new(NULL, "org-gnome-evolution-rss:feederr",
+			             error, msg, NULL);
 #endif
-			gpointer newkey = g_strdup(key);
-                	g_signal_connect(
+			newkey = g_strdup(key);
+			g_signal_connect(
 				ed, "response",
 				G_CALLBACK(err_destroy),
 				NULL);
 			g_object_set_data (
-                        	(GObject *)ed, "response-handled",
-                        	GINT_TO_POINTER (TRUE));
-                	g_signal_connect(ed,
+				(GObject *)ed, "response-handled",
+				GINT_TO_POINTER (TRUE));
+			g_signal_connect(ed,
 				"destroy",
 				G_CALLBACK(dialog_key_destroy),
 				newkey);
@@ -380,11 +377,11 @@ rss_error(gpointer key, gchar *name, gchar *error, gchar *emsg)
 	g_hash_table_insert(rf->error_hash, newkey, GINT_TO_POINTER(1));
 
 #else
-        		EActivityHandler *activity_handler = mail_component_peek_activity_handler (mail_component_peek());
+			EActivityHandler *activity_handler = mail_component_peek_activity_handler (mail_component_peek());
 #if (EVOLUTION_VERSION >= 22300)
-        		guint id = e_activity_handler_make_error (activity_handler, (char *)mail_component_peek(), E_LOG_ERROR, ed);
+			guint id = e_activity_handler_make_error (activity_handler, (char *)mail_component_peek(), E_LOG_ERROR, ed);
 #else
-        		guint id = e_activity_handler_make_error (activity_handler, (char *)mail_component_peek(), msg, ed);
+			guint id = e_activity_handler_make_error (activity_handler, (char *)mail_component_peek(), msg, ed);
 #endif
 			g_hash_table_insert(rf->error_hash, newkey, GINT_TO_POINTER(id));
 #endif
@@ -420,8 +417,8 @@ out:    g_free(msg);
 void
 cancel_active_op(gpointer key)
 {
-	gpointer key_session = g_hash_table_lookup(rf->key_session, key); 
-	gpointer value = g_hash_table_lookup(rf->session, key_session); 
+	gpointer key_session = g_hash_table_lookup(rf->key_session, key);
+	gpointer value = g_hash_table_lookup(rf->session, key_session);
 	if (value)
 		cancel_soup_sess(key_session, value, NULL);
 }
@@ -471,6 +468,17 @@ EActivity *
 guint
 #endif
 #if (EVOLUTION_VERSION >= 22200)
+taskbar_op_new(gchar *message, gpointer key);
+#else
+taskbar_op_new(gchar *message);
+#endif
+
+#if EVOLUTION_VERSION >= 22900 //kb//
+EActivity *
+#else
+guint
+#endif
+#if (EVOLUTION_VERSION >= 22200)
 taskbar_op_new(gchar *message, gpointer key)
 #else
 taskbar_op_new(gchar *message)
@@ -523,7 +531,7 @@ taskbar_op_new(gchar *message)
 }
 
 void
-taskbar_op_set_progress(gpointer key, gchar *msg, gdouble progress)
+taskbar_op_set_progress(gchar *key, gchar *msg, gdouble progress)
 {
 #if (EVOLUTION_VERSION < 22900) //kb//
 	EActivityHandler *activity_handler = mail_component_peek_activity_handler (mail_component_peek ());
@@ -545,12 +553,11 @@ taskbar_op_set_progress(gpointer key, gchar *msg, gdouble progress)
 }
 
 void
-taskbar_op_finish(gpointer key)
+taskbar_op_finish(gchar *key)
 {
 #if  EVOLUTION_VERSION < 22900 //kb//
 	EActivityHandler *activity_handler = mail_component_peek_activity_handler (mail_component_peek ());
 #endif
-	
 	if (rf->activity) {
 #if  EVOLUTION_VERSION < 22900 //kb//
 		guint activity_key = GPOINTER_TO_INT(g_hash_table_lookup(rf->activity, key));
@@ -571,21 +578,29 @@ void
 taskbar_op_message(gchar *msg)
 {
 		gchar *tmsg;
+#if (EVOLUTION_VERSION >= 22900) //kb//
+		EActivity *activity_id;
+#else
+#if (EVOLUTION_VERSION >= 22200)
+		guint activity_id;
+#endif
+#endif
+
 		if (!msg)
 			tmsg = g_strdup_printf(_("Fetching Feeds (%d enabled)"), g_hash_table_size(rf->hrname));
 		else
 			tmsg = g_strdup(msg);
 
 #if (EVOLUTION_VERSION >= 22900) //kb//
-		EActivity *activity_id = taskbar_op_new(tmsg, "main");
+		activity_id = (EActivity *)taskbar_op_new(tmsg, (gchar *)"main");
 #else
 #if (EVOLUTION_VERSION >= 22200)
-		guint activity_id = taskbar_op_new(tmsg, "main");
+		activity_id = taskbar_op_new(tmsg, (gchar *)"main");
 #else
-		guint activity_id = taskbar_op_new(tmsg);
+		activity_id = taskbar_op_new(tmsg);
 #endif
 #endif
-		g_hash_table_insert(rf->activity, "main", GUINT_TO_POINTER(activity_id));
+		g_hash_table_insert(rf->activity, (gchar *)"main", GUINT_TO_POINTER(activity_id));
 		g_free(tmsg);
 }
 
@@ -614,8 +629,8 @@ statuscb(NetStatusType status, gpointer statusdata, gpointer data)
 			gtk_progress_bar_set_fraction((GtkProgressBar *)rf->progress_bar, fraction);
 			gchar *what = g_strdup_printf(_("%2.0f%% done"), fraction*100);
 			gtk_label_set_text(GTK_LABEL(rf->label), data);
-	        	gtk_progress_bar_set_text((GtkProgressBar *)rf->progress_bar, what);
-	        	g_free(what);
+			gtk_progress_bar_set_text((GtkProgressBar *)rf->progress_bar, what);
+			g_free(what);
 		}
 #else
 		if (rf->progress_bar && 0 <= fraction && 1 >= fraction) {
@@ -630,7 +645,7 @@ statuscb(NetStatusType status, gpointer statusdata, gpointer data)
         }
 	//update individual progress if previous percetage has not changed
 	if (rf->progress_bar && rf->feed_queue) {
-			gtk_progress_bar_set_fraction((GtkProgressBar *)rf->progress_bar, 
+			gtk_progress_bar_set_fraction((GtkProgressBar *)rf->progress_bar,
 				(double)(100-rf->feed_queue*100/rss_find_enabled())/100);
 	}
         break;
@@ -652,19 +667,19 @@ browser_write(gchar *string, gint length, gchar *base)
 	switch (engine) {
 	case 2:
 #ifdef HAVE_GECKO
-	gtk_moz_embed_open_stream(GTK_MOZ_EMBED(rf->mozembed),
+	gtk_moz_embed_open_stream((GtkMozEmbed *)rf->mozembed,
 			base, "text/html");
 	while (length > 0) {
 		if (length > 4096) {
-			gtk_moz_embed_append_data(GTK_MOZ_EMBED(rf->mozembed),
+			gtk_moz_embed_append_data((GtkMozEmbed *)rf->mozembed,
 				str, 4096);
 			str+=4096;
 		} else
-			gtk_moz_embed_append_data(GTK_MOZ_EMBED(rf->mozembed),
+			gtk_moz_embed_append_data((GtkMozEmbed *)rf->mozembed,
 				str, length);
 	length-=4096;
 	}
-	gtk_moz_embed_close_stream(GTK_MOZ_EMBED(rf->mozembed));
+	gtk_moz_embed_close_stream((GtkMozEmbed *)rf->mozembed);
 #endif
 	break;
 	case 1:
@@ -713,7 +728,7 @@ textcb(NetStatusType status, gpointer statusdata, gpointer data)
 	d(g_print("%f.", fraction*100));
 	}
 	while (gtk_events_pending())
-      		gtk_main_iteration ();
+		gtk_main_iteration ();
         break;
     default:
         g_warning("unhandled network status %d\n", status);
@@ -745,8 +760,8 @@ user_pass_cb(RSS_AUTH *auth_info, gint response, GtkDialog *dialog)
 		rf->soup_auth_retry = FALSE;
 		auth_info->user = g_hash_table_lookup(rf->hruser, auth_info->url);
 		auth_info->pass = g_hash_table_lookup(rf->hrpass, auth_info->url);
-        	if (!auth_info->retrying)
-                	soup_auth_authenticate (auth_info->soup_auth, 
+		if (!auth_info->retrying)
+			soup_auth_authenticate (auth_info->soup_auth, 
 					auth_info->user,
 					auth_info->pass);
                 break;
@@ -767,12 +782,11 @@ create_user_pass_dialog(RSS_AUTH *auth)
 	GtkWidget *username;
 	GtkWidget *password;
 	GtkWidget *checkbutton1;
-	GtkWidget *container;
-	GtkWidget *container2;
-	GtkWidget *widget;
-	GtkWidget *action_area;
-	GtkWidget *content_area;
+	GtkWidget *container, *container2;
+	GtkWidget *widget, *action_area;
+	GtkWidget *content_area, *password_dialog;
         AtkObject *a11y;
+	gchar *markup;
 
         widget = gtk_dialog_new_with_buttons (
                 _("Enter User/Pass for feed"), NULL, 0,
@@ -786,7 +800,7 @@ create_user_pass_dialog(RSS_AUTH *auth)
 //        gtk_window_set_transient_for (GTK_WINDOW (widget), widget->parent);
         gtk_window_set_position (GTK_WINDOW (widget), GTK_WIN_POS_CENTER_ON_PARENT);
         gtk_container_set_border_width (GTK_CONTAINER (widget), 12);
-        GtkWidget *password_dialog = GTK_WIDGET (widget);
+        password_dialog = GTK_WIDGET (widget);
 
 #if GTK_VERSION >= 2014000
         action_area = gtk_dialog_get_action_area (GTK_DIALOG(password_dialog));
@@ -826,7 +840,6 @@ create_user_pass_dialog(RSS_AUTH *auth)
         widget = gtk_label_new (NULL);
         gtk_label_set_line_wrap (GTK_LABEL (widget), TRUE);
 
-	char *markup;
 	markup = g_markup_printf_escaped (_("Enter your username and password for:\n '%s'"), auth->url);
 	gtk_label_set_markup (GTK_LABEL (widget), markup);
 	g_free (markup);
@@ -971,11 +984,12 @@ timeout_soup(void)
 void
 network_timeout(void)
 {
+	float timeout;
 
 	if (nettime_id)
 		g_source_remove(nettime_id);
-	
-	float timeout = gconf_client_get_float(rss_gconf, GCONF_KEY_NETWORK_TIMEOUT, NULL);
+
+	timeout = gconf_client_get_float(rss_gconf, GCONF_KEY_NETWORK_TIMEOUT, NULL);
 
 	if (!timeout)
                timeout = NETWORK_MIN_TIMEOUT;
@@ -983,7 +997,7 @@ network_timeout(void)
 	nettime_id = g_timeout_add (
 				(guint)(timeout)*1000,
 				(GtkFunction) timeout_soup,
-                           	0);
+				0);
 }
 
 static void
@@ -1063,7 +1077,7 @@ feed_to_xml(gchar *key)
 	ctmp = g_strdup_printf("%d", GPOINTER_TO_INT(g_hash_table_lookup(rf->hrttl_multiply, lookup_key(key))));
         xmlSetProp (src, (xmlChar *)"factor", (xmlChar *)ctmp);
 	g_free(ctmp);
-	
+
 	xmlDocDumpMemory (doc, &xmlbuf, &n);
         xmlFreeDoc (doc);
 
@@ -1092,7 +1106,7 @@ save_gconf_feed(void)
 {
 
 	g_hash_table_foreach(rf->hrname, prepare_feed, NULL);
-	
+
         gconf_client_set_list (rss_gconf,
                               "/apps/evolution/evolution-rss/feeds",
                               GCONF_VALUE_STRING, rss_list, NULL);
@@ -1143,7 +1157,7 @@ rss_select_folder(gchar *folder_name)
 	g_print("cv:%p", cv);*/
 //	void *el = g_object_get_data((GObject *)cv, "info-label");
   //      EMFolderView *emfv = g_object_get_data((GObject *)el, "folderview");
-//      	EMFolderView *emfv = g_object_new(em_folder_view_get_type(), NULL);
+//	EMFolderView *emfv = g_object_new(em_folder_view_get_type(), NULL);
 //	GtkWidget *po = (GtkWidget *)model.parent_object;
   //      em_folder_tree_set_selected ((EMFolderView *)po), uri, FALSE);
 //	camel_operation_end(NULL);
@@ -1298,39 +1312,38 @@ feed_new_from_xml(char *xml)
 				ttl_multiply = atoi(ctmp);
 			if (ctmp) g_free(ctmp);
 		}
-			
 	}
 
 	g_hash_table_insert(rf->hrname, name, uid);
 	g_hash_table_insert(rf->hrname_r, g_strdup(uid), g_strdup(name));
 	g_hash_table_insert(rf->hr, g_strdup(uid), url);
-	g_hash_table_insert(rf->hrh, 
-				g_strdup(uid), 
+	g_hash_table_insert(rf->hrh,
+				g_strdup(uid),
 				GINT_TO_POINTER(html));
 	g_hash_table_insert(rf->hrt, g_strdup(uid), type);
-	g_hash_table_insert(rf->hre, 
-				g_strdup(uid), 
+	g_hash_table_insert(rf->hre,
+				g_strdup(uid),
 				GINT_TO_POINTER(enabled));
-	g_hash_table_insert(rf->hrdel_feed, 
-				g_strdup(uid), 
+	g_hash_table_insert(rf->hrdel_feed,
+				g_strdup(uid),
 				GINT_TO_POINTER(del_feed));
-	g_hash_table_insert(rf->hrdel_days, 
-				g_strdup(uid), 
+	g_hash_table_insert(rf->hrdel_days,
+				g_strdup(uid),
 				GINT_TO_POINTER(del_days));
-	g_hash_table_insert(rf->hrdel_messages, 
-				g_strdup(uid), 
+	g_hash_table_insert(rf->hrdel_messages,
+				g_strdup(uid),
 				GINT_TO_POINTER(del_messages));
-	g_hash_table_insert(rf->hrdel_unread, 
-				g_strdup(uid), 
+	g_hash_table_insert(rf->hrdel_unread,
+				g_strdup(uid),
 				GINT_TO_POINTER(del_unread));
-	g_hash_table_insert(rf->hrupdate, 
-				g_strdup(uid), 
+	g_hash_table_insert(rf->hrupdate,
+				g_strdup(uid),
 				GINT_TO_POINTER(update));
-	g_hash_table_insert(rf->hrttl, 
-				g_strdup(uid), 
+	g_hash_table_insert(rf->hrttl,
+				g_strdup(uid),
 				GINT_TO_POINTER(ttl));
-	g_hash_table_insert(rf->hrttl_multiply, 
-				g_strdup(uid), 
+	g_hash_table_insert(rf->hrttl_multiply,
+				g_strdup(uid),
 				GINT_TO_POINTER(ttl_multiply));
 	xmlFreeDoc (doc);
 	return TRUE;
@@ -1371,7 +1384,7 @@ load_gconf_feed(void)
                 if (!uid)
                         continue;
 
-        	feed_new_from_xml (l->data);
+		feed_new_from_xml (l->data);
 
                 g_free (uid);
         }
@@ -1385,31 +1398,33 @@ migrate_old_config(gchar *feed_file)
 	FILE *ffile;
 	gchar rfeed[512];
 	char **str;
+	gpointer key;
+
 	memset(rfeed, 0, 512);
 
 	if ((ffile = fopen(feed_file, "r"))) {
 		while (fgets(rfeed, 511, ffile) != NULL) {
                         str = g_strsplit(rfeed, "--", 0);
-                        gpointer key = gen_md5(str[1]);
+                        key = gen_md5(str[1]);
                         g_hash_table_insert(rf->hrname, g_strdup(str[0]), g_strdup(key));
                         g_hash_table_insert(rf->hrname_r, g_strdup(key), g_strdup(str[0]));
                         g_hash_table_insert(rf->hr, g_strdup(key), g_strstrip(str[1]));
                         if (NULL != str[4]) {
-                                g_hash_table_insert(rf->hrh, g_strdup(key), 
+                                g_hash_table_insert(rf->hrh, g_strdup(key),
                                         GINT_TO_POINTER(atoi(g_strstrip(str[4]))));
                                 g_hash_table_insert(rf->hrt, g_strdup(key), g_strdup(str[3]));
-                                g_hash_table_insert(rf->hre, g_strdup(key), 
+                                g_hash_table_insert(rf->hre, g_strdup(key),
                                         GINT_TO_POINTER(atoi(str[2])));
                         } else {
                                 if (NULL != str[2]) {    // 0.0.1 -> 0.0.2
                                         g_hash_table_insert(rf->hrh, g_strdup(key), (gpointer)0);
                                         g_hash_table_insert(rf->hrt, g_strdup(key), g_strstrip(str[3]));
-                                        g_hash_table_insert(rf->hre, g_strdup(key), 
+                                        g_hash_table_insert(rf->hre, g_strdup(key),
                                                 GINT_TO_POINTER(atoi(str[2])));
                                 } else {
                                         g_hash_table_insert(rf->hrh, g_strdup(key),  (gpointer)0);
                                         g_hash_table_insert(rf->hrt, g_strdup(key), g_strdup("RSS"));
-                                        g_hash_table_insert(rf->hre, g_strdup(key), 
+                                        g_hash_table_insert(rf->hre, g_strdup(key),
                                         (gpointer)1);
                                 }
                         }
@@ -1425,11 +1440,12 @@ guint
 read_feeds(rssfeed *rf)
 {
 	guint res = 0;
-	//contruct feeds
 	gchar *feed_dir = rss_component_peek_base_directory();
+	gchar *feed_file;
+
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
 	    g_mkdir_with_parents (feed_dir, 0755);
-	gchar *feed_file = g_strdup_printf("%s/evolution-feeds", feed_dir);
+	feed_file = g_strdup_printf("%s/evolution-feeds", feed_dir);
 	g_free(feed_dir);
 	rf->hrname = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
 	rf->hrname_r = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
@@ -1465,7 +1481,6 @@ summary_cb (GtkWidget *button, EMFormatHTMLPObject *pobject)
 	em_format_redraw((EMFormat *)pobject);
 //	while (gtk_events_pending ())
   //           gtk_main_iteration ();
-	
 }
 
 static void
@@ -1475,9 +1490,9 @@ back_cb (GtkWidget *button, EMFormatHTMLPObject *pobject)
 	engine = fallback_engine();
 #ifdef	HAVE_GECKO
 	if (engine == 2)
-		gtk_moz_embed_go_back(GTK_MOZ_EMBED(rf->mozembed));
+		gtk_moz_embed_go_back((GtkMozEmbed *)rf->mozembed);
 #endif
-#if HAVE_WEBKIT
+#ifdef HAVE_WEBKIT
 	if (engine == 1) {
 		g_print("going back\n");
 		webkit_web_view_go_back (WEBKIT_WEB_VIEW(rf->mozembed));
@@ -1492,14 +1507,16 @@ forward_cb (GtkWidget *button, EMFormatHTMLPObject *pobject)
 	engine = fallback_engine();
 #ifdef	HAVE_GECKO
 	if (engine == 2)
-		gtk_moz_embed_go_forward(GTK_MOZ_EMBED(rf->mozembed));
+		gtk_moz_embed_go_forward((GtkMozEmbed *)rf->mozembed);
 #endif
-#if HAVE_WEBKIT
+#ifdef HAVE_WEBKIT
 	if (engine == 1)
 		webkit_web_view_go_forward(WEBKIT_WEB_VIEW(rf->mozembed));
 #endif
 }
 
+void stop_cb (GtkWidget *button, EMFormatHTMLPObject *pobject);
+
 void
 stop_cb (GtkWidget *button, EMFormatHTMLPObject *pobject)
 {
@@ -1507,9 +1524,9 @@ stop_cb (GtkWidget *button, EMFormatHTMLPObject *pobject)
 	engine = fallback_engine();
 #ifdef	HAVE_GECKO
 	if (engine == 2)
-		gtk_moz_embed_stop_load(GTK_MOZ_EMBED(rf->mozembed));
+		gtk_moz_embed_stop_load((GtkMozEmbed *)rf->mozembed);
 #endif
-#if HAVE_WEBKIT
+#ifdef HAVE_WEBKIT
 	if (engine == 1)
 		webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(rf->mozembed));
 #endif
@@ -1522,38 +1539,39 @@ reload_cb (GtkWidget *button, gpointer data)
 	switch (engine) {
 		case 2:
 #ifdef	HAVE_GECKO
-	gtk_moz_embed_stop_load(GTK_MOZ_EMBED(rf->mozembed));
-       	gtk_moz_embed_load_url (GTK_MOZ_EMBED(rf->mozembed), data);
+	gtk_moz_embed_stop_load((GtkMozEmbed *)rf->mozembed);
+	gtk_moz_embed_load_url ((GtkMozEmbed *)rf->mozembed, data);
 #endif
 		break;
 		case 1:
 #ifdef	HAVE_WEBKIT
 	webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(rf->mozembed));
-     	webkit_web_view_open(WEBKIT_WEB_VIEW(rf->mozembed), data);
+	webkit_web_view_open(WEBKIT_WEB_VIEW(rf->mozembed), data);
 #endif
 		break;
 	}
 }
 
+void mycall (GtkWidget *widget, GtkAllocation *event, gpointer data);
 
 void
 mycall (GtkWidget *widget, GtkAllocation *event, gpointer data)
 {
-	int width;
-  	struct _org_gnome_rss_controls_pobject *po = data;
+	int width, height;
+	struct _org_gnome_rss_controls_pobject *po = data;
 
 	guint k = rf->headers_mode ? 240 : 106;
 	if (GTK_IS_WIDGET(widget)) {
-        	width = widget->allocation.width - 16 - 2;// - 16;
-        	int height = widget->allocation.height - 16 - k;
+		width = widget->allocation.width - 16 - 2;// - 16;
+		height = widget->allocation.height - 16 - k;
 		d(g_print("resize webkit :width:%d, height: %d\n", width, height));
 		if (po->mozembedwindow && rf->mozembed)
-			if(GTK_IS_WIDGET(po->mozembedwindow) 
+			if(GTK_IS_WIDGET(po->mozembedwindow)
 			&& GTK_WIDGET_REALIZED(rf->mozembed)
 			&& height > 0) {
 				if (!browser_fetching) {
 					gchar *msg = g_strdup_printf("<h5>%s</h5>", _("Formatting Message..."));
-					browser_write(msg, strlen(msg), "file:///");
+					browser_write(msg, strlen(msg), (gchar *)"file:///");
 					g_free(msg);
 					browser_fetching=1;
 					fetch_unblocking(
@@ -1592,15 +1610,18 @@ void
 webkit_set_preferences(void)
 {
 #ifdef HAVE_WEBKIT
+	gchar *agstr;
+	WebKitWebSettings *settings;
+#if (WEBKIT_VERSION >= 1001011)
+#endif
 #if (WEBKIT_VERSION >= 1001001)
 	webkit_session = webkit_get_default_session();
 	if (rss_soup_jar)
 		soup_session_add_feature(webkit_session, SOUP_SESSION_FEATURE(rss_soup_jar));
 #endif
 #if (WEBKIT_VERSION >= 1001011)
-	WebKitWebSettings *settings;
 	settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(rf->mozembed));
-	gchar *agstr = g_strdup_printf("Evolution/%s; Evolution-RSS/%s",
+	agstr = g_strdup_printf("Evolution/%s; Evolution-RSS/%s",
                         EVOLUTION_VERSION_STRING, VERSION);
 	g_object_set (settings, "user-agent", agstr,  NULL);
 	g_free(agstr);
@@ -1613,27 +1634,29 @@ gecko_set_preferences(void)
 {
 #ifdef HAVE_GECKO
 	SoupURI *uri;
-	gecko_prefs_set_bool("javascript.enabled", 
+	gchar *agstr;
+
+	gecko_prefs_set_bool("javascript.enabled",
 		gconf_client_get_bool(rss_gconf, GCONF_KEY_HTML_JS, NULL));
-	gecko_prefs_set_bool("security.enable_java", 
+	gecko_prefs_set_bool("security.enable_java",
 		gconf_client_get_bool(rss_gconf, GCONF_KEY_HTML_JAVA, NULL));
 	gecko_prefs_set_bool("plugin.scan.plid.all", FALSE);
-	gecko_prefs_set_bool("plugin.default_plugin_disabled", TRUE); 
-	gchar *agstr = g_strdup_printf("Evolution/%s; Evolution-RSS/%s",
+	gecko_prefs_set_bool("plugin.default_plugin_disabled", TRUE);
+	agstr = g_strdup_printf("Evolution/%s; Evolution-RSS/%s",
                         EVOLUTION_VERSION_STRING, VERSION);
-	gecko_prefs_set_string("general.useragent.extra.firefox", agstr); 
-	gecko_prefs_set_int("browser.ssl_override_behaviour", 2); 
-	gecko_prefs_set_bool("browser.xul.error_pages.enabled", FALSE); 
-	gecko_prefs_set_bool("browser.xul.error_pages.expert_bad_cert", FALSE); 
+	gecko_prefs_set_string("general.useragent.extra.firefox", agstr);
+	gecko_prefs_set_int("browser.ssl_override_behaviour", 2);
+	gecko_prefs_set_bool("browser.xul.error_pages.enabled", FALSE);
+	gecko_prefs_set_bool("browser.xul.error_pages.expert_bad_cert", FALSE);
 	g_free(agstr);
 #if (DATASERVER_VERSION >= 2026000)
 	//I'm only forcing scheme here
 	uri = e_proxy_peek_uri_for(proxy, "http:///";);
 
 	if (uri) {
-		gecko_prefs_set_string("network.proxy.http", uri->host); 
-		gecko_prefs_set_int("network.proxy.http_port", uri->port); 
-		gecko_prefs_set_int("network.proxy.type", 1); 
+		gecko_prefs_set_string("network.proxy.http", uri->host);
+		gecko_prefs_set_int("network.proxy.http_port", uri->port);
+		gecko_prefs_set_int("network.proxy.type", 1);
 	}
 #else
 	g_print("WARN e_proxy_peek_uri_for() requires evolution-data-server 2.26\n");
@@ -1641,8 +1664,8 @@ gecko_set_preferences(void)
 #endif
 //	soup_uri_free(uri);
 //	uri = e_proxy_peek_uri_for(proxy, "https:///";);
-//	gecko_prefs_set_string("network.proxy.ssl", uri->host); 
-//	gecko_prefs_set_int("network.proxy.ssl_port", uri->port); 
+//	gecko_prefs_set_string("network.proxy.ssl", uri->host);
+//	gecko_prefs_set_int("network.proxy.ssl_port", uri->port);
 //	soup_uri_free(uri);
 #endif
 }
@@ -1709,25 +1732,25 @@ rss_popup_link_open(GtkWidget *widget, gpointer data)
 void
 browser_copy_selection(GtkWidget *widget, gpointer data)
 {
-	gecko_copy_selection(GTK_MOZ_EMBED(rf->mozembed));
+	gecko_copy_selection((GtkMozEmbed *)rf->mozembed);
 }
 
 void
 browser_select_all(GtkWidget *widget, gpointer data)
 {
-	gecko_select_all(GTK_MOZ_EMBED(rf->mozembed));
+	gecko_select_all((GtkMozEmbed *)rf->mozembed);
 }
 
 #if EVOLUTION_VERSION >= 22900
 EPopupMenu rss_menu_items[] = {
-	E_POPUP_ITEM (N_("_Copy"), 		G_CALLBACK(browser_copy_selection), 1),
+	E_POPUP_ITEM (N_("_Copy"),		G_CALLBACK(browser_copy_selection), 1),
 	E_POPUP_ITEM (N_("Select _All"),	G_CALLBACK(browser_select_all), 1),
 	E_POPUP_SEPARATOR,
-	E_POPUP_ITEM (N_("Zoom _In"), 		G_CALLBACK(rss_popup_zoom_in), 2),
-	E_POPUP_ITEM (N_("Zoom _Out"), 		G_CALLBACK(rss_popup_zoom_out), 2),
-	E_POPUP_ITEM (N_("_Normal Size"), 	G_CALLBACK(rss_popup_zoom_orig), 2),
+	E_POPUP_ITEM (N_("Zoom _In"),		G_CALLBACK(rss_popup_zoom_in), 2),
+	E_POPUP_ITEM (N_("Zoom _Out"),		G_CALLBACK(rss_popup_zoom_out), 2),
+	E_POPUP_ITEM (N_("_Normal Size"),	G_CALLBACK(rss_popup_zoom_orig), 2),
 	E_POPUP_SEPARATOR,
-	E_POPUP_ITEM (N_("_Open Link"), 	G_CALLBACK(rss_popup_link_open), 4),
+	E_POPUP_ITEM (N_("_Open Link"),		G_CALLBACK(rss_popup_link_open), 4),
 	E_POPUP_ITEM (N_("_Copy Link Location"),G_CALLBACK(rss_popup_link_copy), 4),
 	E_POPUP_TERMINATOR
  };
@@ -1806,18 +1829,24 @@ webkit_click (GtkEntry *entry,
 #endif
 
 #ifdef HAVE_GECKO
+void gecko_net_start(GtkMozEmbed *mozembed, GtkWidget *data);
+
 void
 gecko_net_start(GtkMozEmbed *mozembed, GtkWidget *data)
 {
 	gtk_widget_set_sensitive(data, TRUE);
 }
 
+void gecko_net_stop(GtkMozEmbed *mozembed, GtkWidget *data);
+
 void
 gecko_net_stop(GtkMozEmbed *mozembed, GtkWidget *data)
 {
 	gtk_widget_set_sensitive(data, FALSE);
 }
 
+gboolean gecko_over_link(GtkMozEmbed *mozembed);
+
 gboolean
 gecko_over_link(GtkMozEmbed *mozembed)
 {
@@ -1832,6 +1861,8 @@ gecko_over_link(GtkMozEmbed *mozembed)
 	return FALSE;
 }
 
+gboolean gecko_click(GtkMozEmbed *mozembed, gpointer dom_event, gpointer user_data);
+
 gboolean
 gecko_click(GtkMozEmbed *mozembed, gpointer dom_event, gpointer user_data)
 {
@@ -1844,7 +1875,7 @@ gecko_click(GtkMozEmbed *mozembed, gpointer dom_event, gpointer user_data)
                 return FALSE;
         }
 
-	link = gtk_moz_embed_get_link_message(GTK_MOZ_EMBED(rf->mozembed));
+	link = gtk_moz_embed_get_link_message((GtkMozEmbed *)rf->mozembed);
 
 #if EVOLUTION_VERSION >= 22900
 	menu = e_popup_menu_create_with_domain (rss_menu_items,
@@ -1878,7 +1909,7 @@ gecko_click(GtkMozEmbed *mozembed, gpointer dom_event, gpointer user_data)
 
 	/*normal click let event pass normally*/
 	if (button == 0)
-		gtk_moz_embed_load_url(GTK_MOZ_EMBED(rf->mozembed), link);
+		gtk_moz_embed_load_url((GtkMozEmbed *)rf->mozembed, link);
 	return FALSE;
 }
 #endif
@@ -1894,15 +1925,15 @@ show_webkit(GtkWidget *webkit)
 static gboolean
 org_gnome_rss_browser (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobject)
 {
-	struct _org_gnome_rss_controls_pobject *po = 
+	struct _org_gnome_rss_controls_pobject *po =
 			(struct _org_gnome_rss_controls_pobject *) pobject;
 	GtkWidget *moz;
+	EMFormat *myf = (EMFormat *)efh;
 
 	guint engine = fallback_engine();
 	moz = gtk_scrolled_window_new(NULL,NULL);
 	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(moz),
                                        GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-	
 
 #ifdef HAVE_WEBKIT
 	if (engine == 1) {
@@ -1940,9 +1971,9 @@ org_gnome_rss_browser (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobject
 	if (engine == 1) {
 		d(g_print("Render engine Webkit\n"));
 		if (rf->online) {
-//        		webkit_web_view_open(WEBKIT_WEB_VIEW(rf->mozembed), po->website);
+//			webkit_web_view_open(WEBKIT_WEB_VIEW(rf->mozembed), po->website);
 		} else
-        		webkit_web_view_open(WEBKIT_WEB_VIEW(rf->mozembed), "about:blank");
+			webkit_web_view_open(WEBKIT_WEB_VIEW(rf->mozembed), "about:blank");
 	}
 #endif
 
@@ -1951,10 +1982,10 @@ org_gnome_rss_browser (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobject
 		d(g_print("Render engine Gecko\n"));
 		if (rf->online) {
 			//gtk_moz_embed_stop_load(GTK_MOZ_EMBED(rf->mozembed));
- 	      		//gtk_moz_embed_load_url (GTK_MOZ_EMBED(rf->mozembed), po->website);
+			//gtk_moz_embed_load_url (GTK_MOZ_EMBED(rf->mozembed), po->website);
 		} else {
-			gtk_moz_embed_stop_load(GTK_MOZ_EMBED(rf->mozembed));
-        		gtk_moz_embed_load_url (GTK_MOZ_EMBED(rf->mozembed), "about:blank");
+			gtk_moz_embed_stop_load((GtkMozEmbed *)rf->mozembed);
+			gtk_moz_embed_load_url ((GtkMozEmbed *)rf->mozembed, "about:blank");
 		}
 	}
 #endif
@@ -1969,12 +2000,11 @@ org_gnome_rss_browser (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobject
 		g_idle_add((GSourceFunc)show_webkit, moz);
 	if (engine == 2)
 		gtk_widget_show_all(moz);
-		
+
         gtk_container_add ((GtkContainer *) eb, moz);
 ///        gtk_container_check_resize ((GtkContainer *) eb);
 //	gtk_widget_set_size_request((GtkWidget *)rf->mozembed, 330, 330);
 //        gtk_container_add ((GtkContainer *) eb, rf->mozembed);
-	EMFormat *myf = (EMFormat *)efh;
 	rf->headers_mode = myf->mode;
 	po->mozembedwindow =  moz;
 	po->shandler = g_signal_connect(efh->html,
@@ -1991,37 +2021,39 @@ org_gnome_rss_rfrcomm (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobject
         struct _org_gnome_rss_controls_pobject *po = 
 			(struct _org_gnome_rss_controls_pobject *) pobject;
 	GtkWidget *hbox = gtk_hbox_new (FALSE, 0);
+	GtkWidget *button;
 
 	gchar *mem = g_strdup_printf("%s(%d):",  _("Comments"), po->counter);
 	GtkWidget *label = gtk_link_button_new_with_label(po->website, mem);
 	gtk_widget_show (label);
 	g_free(mem);
 	gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
-	GtkWidget *button = gtk_button_new_with_label(_("Refresh"));
+	button = gtk_button_new_with_label(_("Refresh"));
 	gtk_widget_show (button);
 	gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
 	gtk_widget_show(hbox);
 	g_signal_connect (button, "clicked", G_CALLBACK(refresh_cb), efh);
 	if (GTK_IS_WIDGET(eb))
-        	gtk_container_add ((GtkContainer *) eb, hbox);
+		gtk_container_add ((GtkContainer *) eb, hbox);
         return TRUE;
 }
 
 static gboolean
 org_gnome_rss_controls (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobject)
 {
-	struct _org_gnome_rss_controls_pobject *po = 
+	struct _org_gnome_rss_controls_pobject *po =
 			(struct _org_gnome_rss_controls_pobject *) pobject;
 	GtkWidget *vbox = gtk_vbox_new (TRUE, 1);
 	GtkWidget *hbox2 = gtk_hbox_new (FALSE, 0);
-
 	GtkWidget *label3 = gtk_label_new ("");
+	GtkWidget *button, *button2, *button3, *button4, *button5;
+
 	gchar *mem = g_strdup_printf(" <b>%s: </b>", _("Feed view"));
 	gtk_label_set_markup_with_mnemonic(GTK_LABEL(label3), mem);
 	gtk_widget_show (label3);
 	gtk_box_pack_start (GTK_BOX (hbox2), label3, TRUE, TRUE, 0);
 
-	GtkWidget *button = gtk_button_new_with_label(
+	button = gtk_button_new_with_label(
 				rf->cur_format ? _("Show Summary") :
 						 _("Show Full Text"));
 
@@ -2035,48 +2067,47 @@ org_gnome_rss_controls (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobjec
 	g_signal_connect (button, "clicked", G_CALLBACK(summary_cb), efh);
 	gtk_box_pack_start (GTK_BOX (hbox2), button, TRUE, TRUE, 0);
         gtk_widget_show_all (button);
-	if (rf->cur_format)
-	{
-        	GtkWidget *button4 = gtk_button_new_from_stock (GTK_STOCK_GO_BACK);
+	if (rf->cur_format) {
+		button4 = gtk_button_new_from_stock (GTK_STOCK_GO_BACK);
 		g_signal_connect (button4, "clicked", G_CALLBACK(back_cb), efh);
 //		gtk_widget_set_size_request(button4, 100, 10);
 		gtk_button_set_relief(GTK_BUTTON(button4), GTK_RELIEF_HALF);
 		gtk_widget_set_sensitive (button4, rf->online);
-        	gtk_widget_show (button4);
+		gtk_widget_show (button4);
 		gtk_box_pack_start (GTK_BOX (hbox2), button4, TRUE, TRUE, 0);
-        	GtkWidget *button5 = gtk_button_new_from_stock (GTK_STOCK_GO_FORWARD);
+		button5 = gtk_button_new_from_stock (GTK_STOCK_GO_FORWARD);
 		g_signal_connect (button5, "clicked", G_CALLBACK(forward_cb), efh);
 //		gtk_widget_set_size_request(button5, 100, 10);
 		gtk_button_set_relief(GTK_BUTTON(button5), GTK_RELIEF_HALF);
 		gtk_widget_set_sensitive (button5, rf->online);
-        	gtk_widget_show (button5);
+		gtk_widget_show (button5);
 		gtk_box_pack_start (GTK_BOX (hbox2), button5, TRUE, TRUE, 0);
-        	//GtkWidget *button2 = gtk_button_new_from_stock (GTK_STOCK_STOP);
-        	GtkWidget *button2 = po->stopbut;
+		//GtkWidget *button2 = gtk_button_new_from_stock (GTK_STOCK_STOP);
+		button2 = po->stopbut;
 		g_signal_connect (button2, "clicked", G_CALLBACK(stop_cb), efh);
 
 //		gtk_widget_set_size_request(button2, 100, 10);
 		gtk_button_set_relief(GTK_BUTTON(button2), GTK_RELIEF_HALF);
 		gtk_widget_set_sensitive (button2, rf->online);
-        	gtk_widget_show (button2);
+		gtk_widget_show (button2);
 		gtk_box_pack_start (GTK_BOX (hbox2), button2, TRUE, TRUE, 0);
-        	GtkWidget *button3 = gtk_button_new_from_stock (GTK_STOCK_REFRESH);
+		button3 = gtk_button_new_from_stock (GTK_STOCK_REFRESH);
 		g_signal_connect (button3, "clicked", G_CALLBACK(reload_cb), po->website);
 //		gtk_widget_set_size_request(button3, 100, -1);
 		gtk_button_set_relief(GTK_BUTTON(button3), GTK_RELIEF_HALF);
 		gtk_widget_set_sensitive (button3, rf->online);
-        	gtk_widget_show (button3);
+		gtk_widget_show (button3);
 		gtk_box_pack_start (GTK_BOX (hbox2), button3, TRUE, TRUE, 0);
 //	gtk_widget_show (hbox2);
 	}
 	gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 0);
 	gtk_widget_show_all (vbox);
 
-//      	int width = vbox->allocation.width;
-//       	int height = vbox->allocation.height;
+//		int width = vbox->allocation.width;
+//		int height = vbox->allocation.height;
 
 	if (GTK_IS_WIDGET(eb))
-        	gtk_container_add ((GtkContainer *) eb, vbox);
+		gtk_container_add ((GtkContainer *) eb, vbox);
 //	GtkHTMLEmbedded *myeb = eb;
 //	gtk_widget_size_request(myeb->widget, &req);
 //	g_print("BOX ww:%d,hh%d\n", myeb->width, myeb->height);
@@ -2095,10 +2126,12 @@ cancel_comments_session(SoupSession *sess)
 	soup_session_abort(sess);
 }
 
+void free_rss_controls(EMFormatHTMLPObject *o);
+
 void
 free_rss_controls(EMFormatHTMLPObject *o)
 {
-	struct _org_gnome_rss_controls_pobject *po = 
+	struct _org_gnome_rss_controls_pobject *po =
 			(struct _org_gnome_rss_controls_pobject *) o;
 	if (po->mem)
 		g_free(po->mem);
@@ -2110,23 +2143,27 @@ free_rss_controls(EMFormatHTMLPObject *o)
 //	comments_session = NULL;
 }
 
+void free_rss_browser(EMFormatHTMLPObject *o);
+
 void
 free_rss_browser(EMFormatHTMLPObject *o)
 {
-	struct _org_gnome_rss_controls_pobject *po = 
+	struct _org_gnome_rss_controls_pobject *po =
 			(struct _org_gnome_rss_controls_pobject *) o;
 	gpointer key = g_hash_table_lookup(rf->key_session, po->website);
+	guint engine;
+
 	d(g_print("key sess:%p\n", key));
 	if (key) {
 		g_hash_table_remove(rf->key_session, po->website);
 		soup_session_abort(key);
 	}
-	guint engine = gconf_client_get_int(rss_gconf, 
+	engine = gconf_client_get_int(rss_gconf,
 					GCONF_KEY_HTML_RENDER,
 					NULL);
 #ifdef HAVE_GECKO
 	if (engine == 2) {
-		gtk_moz_embed_stop_load(GTK_MOZ_EMBED(rf->mozembed));
+		gtk_moz_embed_stop_load((GtkMozEmbed *)rf->mozembed);
 	}
 #endif
 	if (rf->mozembed) {
@@ -2141,11 +2178,14 @@ free_rss_browser(EMFormatHTMLPObject *o)
 }
 
 
+void org_gnome_evolution_presend (EPlugin *ep, EMEventTargetComposer *t);
+
 void
 org_gnome_evolution_presend (EPlugin *ep, EMEventTargetComposer *t)
 {
 #ifdef HAVE_GTKHTMLEDITOR
 	xmlChar *buff = NULL;
+	xmlDoc *doc;
 	gint size;
 	gsize length;
 	gchar *text;
@@ -2156,8 +2196,7 @@ org_gnome_evolution_presend (EPlugin *ep, EMEventTargetComposer *t)
 	 */
 	text = gtkhtml_editor_get_text_html ((GtkhtmlEditor *)t->composer, &length);
 
-
-	xmlDoc *doc = rss_html_url_decode(text, strlen(text));
+	doc = rss_html_url_decode(text, strlen(text));
 	if (doc) {
 		htmlDocDumpMemory(doc, &buff, &size);
 		xmlFree(doc);
@@ -2184,15 +2223,30 @@ void org_gnome_cooly_format_rss(void *ep, EMFormatHookTarget *t)	//camelmimepart
 	int size;
 	CamelDataWrapper *dw = camel_data_wrapper_new();
 	CamelMimePart *part = camel_mime_part_new();
+	CamelMimePart *message;
 	CamelStream *fstream = camel_stream_mem_new();
+	CamelStreamMem *stream = (CamelStreamMem *)camel_stream_mem_new();
+	CamelDataWrapper *mcontent;
+	EMFormatHTML *emfh = (EMFormatHTML *)t->format;
+	gchar *rfrclsid, *addr, *subject, *result;
+	const char *website;
+	struct _org_gnome_rss_controls_pobject *pobj;
+	gpointer is_html;
+	gchar *classid, *tmp;
+	GtkWidget *button2;
+	xmlDoc *src;
+	xmlChar *wid;
+	GByteArray *buffer;
+	GdkPixbuf *pix;
+	gchar *feed_dir, *feed_file, *iconfile;
+
 	current_pobject = t->format;
         d(g_print("Formatting...\n"));
 
-	CamelMimePart *message = CAMEL_IS_MIME_MESSAGE(t->part) ? 
-			t->part : 
+	message = CAMEL_IS_MIME_MESSAGE(t->part) ?
+			t->part :
 			(CamelMimePart *)t->format->message;
 
-	EMFormatHTML *emfh = (EMFormatHTML *)t->format;
 	/* force loading of images even if mail images disabled */
 	/* //KB// */
 	//emfh->load_http_now = TRUE;
@@ -2223,30 +2277,29 @@ void org_gnome_cooly_format_rss(void *ep, EMFormatHookTarget *t)	//camelmimepart
 #endif
 
 	type = camel_mime_part_get_content_type(message);
-	const char *website = camel_medium_get_header (CAMEL_MEDIUM (message), "Website");
+	website = camel_medium_get_header (CAMEL_MEDIUM (message), "Website");
 	if (!website)
 		goto fmerror;
-	gchar *addr = (gchar *)camel_header_location_decode(website);
+	addr = (gchar *)camel_header_location_decode(website);
 	feedid  = (gchar *)camel_medium_get_header (CAMEL_MEDIUM(message), "RSS-ID");
 	comments  = (gchar *)camel_medium_get_header (CAMEL_MEDIUM(message), "X-Evolution-rss-comments");
 	category  = (gchar *)camel_medium_get_header (CAMEL_MEDIUM(message), "X-Evolution-rss-category");
-	gchar *subject = camel_header_decode_string(camel_medium_get_header (CAMEL_MEDIUM (message),
+	subject = camel_header_decode_string(camel_medium_get_header (CAMEL_MEDIUM (message),
 				 "Subject"), NULL);
-	
-	gpointer is_html = NULL;
+
+	is_html = NULL;
 	if (feedid)
 		is_html =  g_hash_table_lookup(rf->hrh, g_strstrip(feedid)); //feedid is modified
 	if (comments)
 		comments = g_strstrip(comments);
-	
+
 	if (!rf->chg_format)
 		rf->cur_format = GPOINTER_TO_INT(is_html);
-	
+
 	if (rf->chg_format)
 		rf->chg_format = 0;
 
-	struct _org_gnome_rss_controls_pobject *pobj;
-        char *classid = g_strdup_printf ("org-gnome-rss-controls-%d",
+	classid = g_strdup_printf ("org-gnome-rss-controls-%d",
 			org_gnome_rss_controls_counter_id);
 	org_gnome_rss_controls_counter_id++;
 	pobj = (struct _org_gnome_rss_controls_pobject *)
@@ -2261,7 +2314,7 @@ void org_gnome_cooly_format_rss(void *ep, EMFormatHookTarget *t)	//camelmimepart
 	pobj->object.free = free_rss_controls;
         camel_stream_printf (t->stream, "<object classid=%s></object>\n", classid);
 	//precreate stop button as we need it to control it later
-       	GtkWidget *button2 = gtk_button_new_from_stock (GTK_STOCK_STOP);
+	button2 = gtk_button_new_from_stock (GTK_STOCK_STOP);
 	pobj->stopbut = button2;
 	g_free (classid);
 
@@ -2269,15 +2322,15 @@ void org_gnome_cooly_format_rss(void *ep, EMFormatHookTarget *t)	//camelmimepart
 	if (rf->cur_format || (feedid && is_html && rf->cur_format)) {
 		engine = fallback_engine();
 #ifdef HAVE_RENDERKIT
-		if (engine && engine != 10) { 
-        		char *classid = g_strdup_printf ("org-gnome-rss-controls-%d",
+		if (engine && engine != 10) {
+	 		char *classid = g_strdup_printf ("org-gnome-rss-controls-%d",
 				org_gnome_rss_controls_counter_id);
 			org_gnome_rss_controls_counter_id++;
-			pobj = (struct _org_gnome_rss_controls_pobject *) 
-				em_format_html_add_pobject ((EMFormatHTML *) t->format, 
-									sizeof(*pobj), 
-									classid, 
-									message, 
+			pobj = (struct _org_gnome_rss_controls_pobject *)
+				em_format_html_add_pobject ((EMFormatHTML *) t->format,
+									sizeof(*pobj),
+									classid,
+									message,
 									(EMFormatHTMLPObjectFunc)org_gnome_rss_browser);
 			pobj->website = g_strstrip(g_strdup((gchar *)website));
 			pobj->is_html = GPOINTER_TO_INT(is_html);
@@ -2291,8 +2344,8 @@ void org_gnome_cooly_format_rss(void *ep, EMFormatHookTarget *t)	//camelmimepart
 				content_colour & 0xffffff,
 				text_colour & 0xffffff);
 			camel_stream_printf(t->stream,
-		 		"<table border=0 width=\"100%%\" cellpadding=1 cellspacing=1><tr><td>");
-        		camel_stream_printf (t->stream, 
+				"<table border=0 width=\"100%%\" cellpadding=1 cellspacing=1><tr><td>");
+			camel_stream_printf (t->stream,
 				"<object classid=%s></object></td></tr></table></div>\n",
 				classid);
 			g_free (classid);
@@ -2302,7 +2355,7 @@ void org_gnome_cooly_format_rss(void *ep, EMFormatHookTarget *t)	//camelmimepart
 		//replace with unblocking
 		content = fetch_blocking(addr, NULL, NULL, textcb, NULL, &err);
 		if (err) {
-			//we do not need to setup a pop error menu since we're in 
+			//we do not need to setup a pop error menu since we're in
 			//formatting process. But instead display mail body an error
 			//such proxy error or transport error
 			camel_stream_printf (t->stream,
@@ -2310,16 +2363,16 @@ void org_gnome_cooly_format_rss(void *ep, EMFormatHookTarget *t)	//camelmimepart
 				frame_colour & 0xffffff,
 				content_colour & 0xffffff,
 				text_colour & 0xffffff);
-			camel_stream_printf(t->stream, 
-        			"<div style=\"border: solid 0px; padding: 4px;\">\n");
-     			camel_stream_printf (t->stream, "<h3>Error!</h3>");
-     			camel_stream_printf (t->stream, "%s", err->message);
-    			camel_stream_printf (t->stream, "</div>");
-                	goto out;
-        	}
+			camel_stream_printf(t->stream,
+				"<div style=\"border: solid 0px; padding: 4px;\">\n");
+			camel_stream_printf (t->stream, "<h3>Error!</h3>");
+			camel_stream_printf (t->stream, "%s", err->message);
+			camel_stream_printf (t->stream, "</div>");
+			goto out;
+		}
 
-		gchar *tmp = decode_utf8_entities(content->str);
-		xmlDoc *src = (xmlDoc *)parse_html(addr, tmp, strlen(tmp));
+		tmp = decode_utf8_entities(content->str);
+		src = (xmlDoc *)parse_html(addr, tmp, strlen(tmp));
 
 		if (src) {
 			htmlDocDumpMemory(src, &buff, &size);
@@ -2345,10 +2398,10 @@ void org_gnome_cooly_format_rss(void *ep, EMFormatHookTarget *t)	//camelmimepart
                                 "<b><font size=-1>%s: %s</font></b></div>",
                                 content_colour & 0xEDECEB & 0xffffff, text_colour & 0xffffff,
                                 _("Posted under"), category);
-                camel_stream_printf (fstream, 
+                camel_stream_printf (fstream,
 				"<div style=\"border: solid #%06x 0px; background-color: #%06x; padding: 2px; color: #%06x;\">"
                                 "%s</div>",
-                        	frame_colour & 0xffffff,
+				frame_colour & 0xffffff,
 				content_colour & 0xffffff,
 				text_colour & 0xffffff,
                                 buff);
@@ -2356,34 +2409,30 @@ void org_gnome_cooly_format_rss(void *ep, EMFormatHookTarget *t)	//camelmimepart
 		g_string_free(content, 1);
 	} else {
 		d(g_print("normal html rendering\n"));
-		GByteArray *buffer;
-		CamelStreamMem *stream = (CamelStreamMem *)camel_stream_mem_new();
 		buffer = g_byte_array_new ();
-        	camel_stream_mem_set_byte_array (stream, buffer);
-
-		CamelDataWrapper *content = camel_medium_get_content_object(CAMEL_MEDIUM(t->part));
-     		camel_data_wrapper_write_to_stream(content, (CamelStream *)stream);
+		camel_stream_mem_set_byte_array (stream, buffer);
+		mcontent = camel_medium_get_content_object(CAMEL_MEDIUM(t->part));
+		camel_data_wrapper_write_to_stream(mcontent, (CamelStream *)stream);
 		g_byte_array_append (buffer, (unsigned char *)"", 1);
 //#ifdef EVOLUTION_2_12	//aparently this ("?" char parsing) is fixed in 2.12
-//		//then again this does not work in evo > 2.12 perhaps is gtkhtml related 
+//		//then again this does not work in evo > 2.12 perhaps is gtkhtml related
 //		buff = buffer->data;
 //#else
-		gchar *tmp;
-	 	if (camel_content_type_is(type, "text", "evolution-rss-feed")) {	//old evolution-rss content type
+		if (camel_content_type_is(type, "text", "evolution-rss-feed")) {	//old evolution-rss content type
 			tmp = decode_utf8_entities((gchar *)(buffer->data));
 		} else
 			tmp = g_strdup((gchar *)(buffer->data));
 
-		if (gconf_client_get_bool (rss_gconf, 
-					GCONF_KEY_IMAGE_RESIZE, 
+		if (gconf_client_get_bool (rss_gconf,
+					GCONF_KEY_IMAGE_RESIZE,
 					NULL)) {
 			GtkWidget *obj = (GtkWidget *)emfh->html;
-        		guint width = obj->allocation.width - 56;
+			guint width = obj->allocation.width - 56;
 			gchar *wids = g_strdup_printf("%d", width);
 			xmlDoc *src = (xmlDoc *)parse_html_sux(tmp, strlen(tmp));
 			if (src) {
 				xmlNode *doc = (xmlNode *)src;
-				while ((doc = html_find(doc, "img"))) {
+				while ((doc = html_find(doc, (gchar *)"img"))) {
 					int real_width = 0;
 					xmlChar *url = xmlGetProp(doc, (xmlChar *)"src");
 					//FIXME: this should run even if image_resize is not on
@@ -2392,7 +2441,7 @@ void org_gnome_cooly_format_rss(void *ep, EMFormatHookTarget *t)	//camelmimepart
 						xmlSetProp(doc, (xmlChar *)"src", (xmlChar *)real_image);
 						g_free(real_image);
 					}
-					GdkPixbuf *pix = gdk_pixbuf_new_from_file((const char *)url,
+					pix = gdk_pixbuf_new_from_file((const char *)url,
                                                          (GError **)NULL);
 					if (pix)
 						real_width = gdk_pixbuf_get_width(pix);
@@ -2400,7 +2449,7 @@ void org_gnome_cooly_format_rss(void *ep, EMFormatHookTarget *t)	//camelmimepart
 						xmlSetProp(doc, (xmlChar *)"width", (xmlChar *)wids);
 						goto pixdone;
 					}
-					xmlChar *wid = xmlGetProp(doc, (xmlChar *)"width");
+					wid = xmlGetProp(doc, (xmlChar *)"width");
 					if (wid) {
 						if (atof((const char *)wid) > width)
 							xmlSetProp(doc, (xmlChar *)"width", (xmlChar *)wids);
@@ -2420,38 +2469,37 @@ pixdone:			g_free(url);
 	//	char *buff = decode_html_entities(buffer2);
 ///		buff=tmp;
 
-
-		gchar *feed_dir = rss_component_peek_base_directory();
-		gchar *feed_file = g_strdup_printf("%s/%s.img", feed_dir, feedid);
+		feed_dir = rss_component_peek_base_directory();
+		feed_file = g_strdup_printf("%s/%s.img", feed_dir, feedid);
 		g_free(feed_dir);
 
 		camel_stream_printf (fstream,
                         "<div style=\"border: solid #%06x 1px; background-color: #%06x; padding: 2px; color: #%06x;\">",
                         frame_colour & 0xffffff, content_colour & 0xEDECEB & 0xffffff, text_colour & 0xffffff);
-        	if (g_file_test(feed_file, G_FILE_TEST_EXISTS))
+			if (g_file_test(feed_file, G_FILE_TEST_EXISTS))
 			if ((pixbuf = gdk_pixbuf_new_from_file(feed_file, NULL))) {
-                		camel_stream_printf (fstream,
-                        		"<div style=\"border: solid 0px; background-color: #%06x; padding: 2px; color: #%06x;\">"
-                        		"<img height=16 src=%s>"
-                        		"<b><font size=+1><a href=%s>%s</a></font></b></div>",
+				camel_stream_printf (fstream,
+					"<div style=\"border: solid 0px; background-color: #%06x; padding: 2px; color: #%06x;\">"
+					"<img height=16 src=%s>"
+					"<b><font size=+1><a href=%s>%s</a></font></b></div>",
 					content_colour & 0xEDECEB & 0xffffff,
 					text_colour & 0xffffff,
-                        		feed_file,
+					feed_file,
 					website,
 					subject);
 				g_object_unref(pixbuf);
 				g_free(feed_file);
 				goto render_body;
 			}
-		gchar *iconfile = g_build_filename (EVOLUTION_ICONDIR,
+		iconfile = g_build_filename (EVOLUTION_ICONDIR,
                                             "rss-16.png",
                                                 NULL);
-      		camel_stream_printf (fstream,
-                       	"<div style=\"border: solid 0px; background-color: #%06x; padding: 2px; color: #%06x;\">"
+		camel_stream_printf (fstream,
+			"<div style=\"border: solid 0px; background-color: #%06x; padding: 2px; color: #%06x;\">"
                         "<img height=16 src=%s>"
-                       	"<b><font size=+1><a href=%s>%s</a></font></b></div>",
+			"<b><font size=+1><a href=%s>%s</a></font></b></div>",
 			content_colour & 0xEDECEB & 0xffffff, text_colour & 0xffffff,
-                       	iconfile, website, subject);
+			iconfile, website, subject);
 		g_free(iconfile);
 		g_free(feed_file);
 
@@ -2462,29 +2510,29 @@ render_body:	if (category)
                                 content_colour & 0xEDECEB & 0xffffff,
 				text_colour & 0xffffff,
                                 category);
-               	camel_stream_printf (fstream, 
+		camel_stream_printf (fstream,
 				"<div style=\"border: solid #%06x 0px; background-color: #%06x; padding: 10px; color: #%06x;\">"
                                 "%s</div>",
-                        	frame_colour & 0xffffff,
+				frame_colour & 0xffffff,
 				content_colour & 0xffffff,
 				text_colour & 0xffffff,
                                 buff);
-		if (comments && gconf_client_get_bool (rss_gconf, 
-						GCONF_KEY_SHOW_COMMENTS, 
+		if (comments && gconf_client_get_bool (rss_gconf,
+						GCONF_KEY_SHOW_COMMENTS,
 						NULL)) {
 			if (commstream) {
-				camel_stream_printf (fstream, 
-                        		"<div style=\"border: solid #%06x 0px; background-color: #%06x; padding: 2px; color: #%06x;\">",
-                        		frame_colour & 0xffffff,
+				camel_stream_printf (fstream,
+					"<div style=\"border: solid #%06x 0px; background-color: #%06x; padding: 2px; color: #%06x;\">",
+					frame_colour & 0xffffff,
 					content_colour & 0xEDECEB & 0xffffff,
 					text_colour & 0xffffff);
-				gchar *result = print_comments(comments, commstream);
+				result = print_comments(comments, commstream);
 				g_free(commstream);
-				char *rfrclsid = g_strdup_printf ("org-gnome-rss-controls-%d",
+				rfrclsid = g_strdup_printf ("org-gnome-rss-controls-%d",
 					org_gnome_rss_controls_counter_id);
 				org_gnome_rss_controls_counter_id++;
-				pobj = (struct _org_gnome_rss_controls_pobject *) 
-							em_format_html_add_pobject ((EMFormatHTML *) t->format, 
+				pobj = (struct _org_gnome_rss_controls_pobject *)
+							em_format_html_add_pobject ((EMFormatHTML *) t->format,
 									sizeof(*pobj),
 									rfrclsid,
 									message,
@@ -2493,12 +2541,12 @@ render_body:	if (category)
 				pobj->website = g_strdup(comments);
 				//this might not be needed but we want to make sure po->html is destroyed
 				pobj->object.free = free_rss_controls;
-				camel_stream_printf(fstream, 
-                       			"<object height=25 classid=%s></object>", rfrclsid);
+				camel_stream_printf(fstream,
+					"<object height=25 classid=%s></object>", rfrclsid);
 				if (result && strlen(result)) {
-					camel_stream_printf(fstream, 
+					camel_stream_printf(fstream,
 					"<div style=\"border: solid #%06x 0px; background-color: #%06x; padding: 10px; color: #%06x;\">%s",
-						frame_colour & 0xffffff, 
+						frame_colour & 0xffffff,
 						content_colour & 0xffffff,
 						text_colour & 0xffffff,
 						result);
@@ -2515,9 +2563,9 @@ render_body:	if (category)
 	}
 
 	//this is required for proper charset rendering when html
-      	camel_data_wrapper_construct_from_stream(dw, fstream);
-      	camel_medium_set_content_object((CamelMedium *)part, dw);
-	em_format_format_text((EMFormat *)t->format, 
+	camel_data_wrapper_construct_from_stream(dw, fstream);
+	camel_medium_set_content_object((CamelMedium *)part, dw);
+	em_format_format_text((EMFormat *)t->format,
 				(CamelStream *)t->stream,
 				(CamelDataWrapper *)part);
 	camel_object_unref(dw);
@@ -2533,16 +2581,22 @@ fmerror:
 	camel_stream_printf (t->stream,
                "<div style=\"border: solid #%06x 1px; background-color: #%06x; color: #%06x;\">\n",
                frame_colour & 0xffffff, content_colour & 0xffffff, text_colour & 0xffffff);
-	camel_stream_printf(t->stream, 
+	camel_stream_printf(t->stream,
         "<div style=\"border: solid 0px; padding: 4px;\">\n");
-     	camel_stream_printf (t->stream,
+	camel_stream_printf (t->stream,
 	"<h3>Formatting error!</h3>"
 	"Feed article corrupted! Cannot format article.");
-    	camel_stream_printf (t->stream, "</div></div>");
+	camel_stream_printf (t->stream, "</div></div>");
 	return;
 }
 
 #if EVOLUTION_VERSION < 22900 //kb//
+void org_gnome_cooly_folder_refresh(void *ep, EMEventTargetFolder *t);
+#else
+void org_gnome_cooly_folder_refresh(void *ep, EShellView *shell_view);
+#endif
+
+#if EVOLUTION_VERSION < 22900 //kb//
 void org_gnome_cooly_folder_refresh(void *ep, EMEventTargetFolder *t)
 #else
 void org_gnome_cooly_folder_refresh(void *ep, EShellView *shell_view)
@@ -2553,6 +2607,10 @@ void org_gnome_cooly_folder_refresh(void *ep, EShellView *shell_view)
 	EMFolderTree *folder_tree;
         CamelFolder *folder;
 	EShellSidebar *shell_sidebar = e_shell_view_get_shell_sidebar(shell_view);
+	gchar *main_folder = get_main_folder();
+	gchar *ofolder, *name, *fname, *key, *rss_folder;
+
+
 	g_object_get (shell_sidebar, "folder-tree", &folder_tree, NULL);
         folder = em_folder_tree_get_selected_folder (folder_tree);
         g_return_if_fail (folder != NULL);
@@ -2560,21 +2618,20 @@ void org_gnome_cooly_folder_refresh(void *ep, EShellView *shell_view)
 #else
 	folder_name = t->uri;
 #endif
-	gchar *main_folder = get_main_folder();
-	if (folder_name == NULL 
+	if (folder_name == NULL
 	  || g_ascii_strncasecmp(folder_name, main_folder, strlen(main_folder)))
 		goto out;
 	if (!g_ascii_strcasecmp(folder_name, main_folder))
 		goto out;
-	gchar *rss_folder = extract_main_folder(folder_name);
+	rss_folder = extract_main_folder(folder_name);
 	if (!rss_folder)
 		goto out;
-	gchar *ofolder = g_hash_table_lookup(rf->feed_folders, rss_folder);
-	gchar *fname = ofolder ? ofolder : rss_folder;
-	gchar *key = g_hash_table_lookup(rf->hrname, fname);
+	ofolder = g_hash_table_lookup(rf->feed_folders, rss_folder);
+	fname = ofolder ? ofolder : rss_folder;
+	key = g_hash_table_lookup(rf->hrname, fname);
 	if (!key)
 		goto out;
-	gchar *name = g_strdup_printf("%s: %s", _("Fetching feed"), (gchar *)g_hash_table_lookup(rf->hrname_r, key));
+	name = g_strdup_printf("%s: %s", _("Fetching feed"), (gchar *)g_hash_table_lookup(rf->hrname_r, key));
 
 	if (g_hash_table_lookup(rf->hre, key)
 	  && !rf->pending && !rf->feed_queue
@@ -2585,7 +2642,7 @@ void org_gnome_cooly_folder_refresh(void *ep, EShellView *shell_view)
 		taskbar_op_message(name);
 		network_timeout();
 		if (!fetch_one_feed(fname, key, statuscb))
-			taskbar_op_finish("main");
+			taskbar_op_finish((gchar *)"main");
                 single_pending = FALSE;
 	}
 	g_free(name);
@@ -2593,27 +2650,31 @@ out:	return;
 }
 
 #if (EVOLUTION_VERSION >= 22306)
+void org_gnome_cooly_folder_icon(void *ep, EMEventTargetCustomIcon *t);
+
 void org_gnome_cooly_folder_icon(void *ep, EMEventTargetCustomIcon *t)
 {
 	static gboolean initialised = FALSE;
 	gchar *iconfile;
+	gchar *rss_folder, *ofolder, *key;
+	gchar *main_folder = get_main_folder();
 #if (EVOLUTION_VERSION < 22703)
 	GdkPixbuf *icon, *pixbuf;
 #endif
 
-	gchar *main_folder = get_main_folder();
-	if (t->folder_name == NULL 
+	main_folder = get_main_folder();
+	if (t->folder_name == NULL
 	  || g_ascii_strncasecmp(t->folder_name, main_folder, strlen(main_folder)))
 		goto out;
 	if (!g_ascii_strcasecmp(t->folder_name, main_folder))
 		goto normal;
-	gchar *rss_folder = extract_main_folder((gchar *)t->folder_name);
+	rss_folder = extract_main_folder((gchar *)t->folder_name);
 	if (!rss_folder)
 		goto out;
 	if (!icons)
 		icons = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
-	gchar *ofolder = g_hash_table_lookup(rf->feed_folders, rss_folder);
-	gchar *key = g_hash_table_lookup(rf->hrname,
+	ofolder = g_hash_table_lookup(rf->feed_folders, rss_folder);
+	key = g_hash_table_lookup(rf->hrname,
 				ofolder ? ofolder : rss_folder);
 	g_free(rss_folder);
 	if (!key)
@@ -2628,8 +2689,8 @@ void org_gnome_cooly_folder_icon(void *ep, EMEventTargetCustomIcon *t)
 #else
 	if (!(icon = g_hash_table_lookup(icons, key))) {
 #endif
-  		if (gconf_client_get_bool (rss_gconf, GCONF_KEY_FEED_ICON, NULL)) {
-//        		if (g_file_test(feed_file, G_FILE_TEST_EXISTS)) {
+		if (gconf_client_get_bool (rss_gconf, GCONF_KEY_FEED_ICON, NULL)) {
+//			if (g_file_test(feed_file, G_FILE_TEST_EXISTS)) {
 					// unfortunately e_icon_factory_get_icon return broken image in case of error
 					// we use gdk_pixbuf_new_from_file to test the validity of the image file
 #if (EVOLUTION_VERSION >= 22703)
@@ -2665,7 +2726,7 @@ void org_gnome_cooly_folder_icon(void *ep, EMEventTargetCustomIcon *t)
 
 normal:	if (!initialised) { //move this to startup
 #if (EVOLUTION_VERSION < 22703)
-defico:		
+defico:
 #endif
 		iconfile = g_build_filename (EVOLUTION_ICONDIR,
 	                                    "rss-16.png",
@@ -2757,7 +2818,7 @@ search_rss(char *buffer, int len)
 	gchar *app;
 	xmlNode *doc = (xmlNode *)parse_html_sux (buffer, len);
 	while (doc) {
-		doc = html_find(doc, "link");
+		doc = html_find(doc, (gchar *)"link");
 		app = (gchar *)xmlGetProp(doc, (xmlChar *)"type");
 		if (app && (!g_ascii_strcasecmp(app, "application/atom+xml")
 		|| !g_ascii_strcasecmp(app, "application/xml")
@@ -2784,78 +2845,78 @@ char *strcasestr(const char *a, const char *b)
 void
 prepare_hashes(void)
 {
-	if (rf->hr == NULL)	
+	if (rf->hr == NULL)
 		rf->hr  = g_hash_table_new_full(g_str_hash,
-						g_str_equal, 
+						g_str_equal,
 						g_free,
 						g_free);
-	if (rf->hre == NULL)	
-        	rf->hre = g_hash_table_new_full(g_str_hash, 
+	if (rf->hre == NULL)
+		rf->hre = g_hash_table_new_full(g_str_hash,
 						g_str_equal,
 						g_free,
 						NULL);
-	if (rf->hrh == NULL)	
-        	rf->hrh = g_hash_table_new_full(g_str_hash,
+	if (rf->hrh == NULL)
+		rf->hrh = g_hash_table_new_full(g_str_hash,
 						g_str_equal,
 						g_free,
 						NULL);
-	if (rf->hrt == NULL)	
-        	rf->hrt = g_hash_table_new_full(g_str_hash,
+	if (rf->hrt == NULL)
+		rf->hrt = g_hash_table_new_full(g_str_hash,
 						g_str_equal,
 						g_free,
 						g_free);
-	if (rf->hruser == NULL)	
-	    	rf->hruser = g_hash_table_new_full(g_str_hash,
+	if (rf->hruser == NULL)
+		rf->hruser = g_hash_table_new_full(g_str_hash,
 						 g_str_equal,
 						 NULL,
 						 g_free);
-	if (rf->hrpass == NULL)	
-	    	rf->hrpass = g_hash_table_new_full(g_str_hash,
+	if (rf->hrpass == NULL)
+		rf->hrpass = g_hash_table_new_full(g_str_hash,
 						 g_str_equal,
 						 NULL,
 						 g_free);
-	if (rf->hrname == NULL)	
-	    	rf->hrname = g_hash_table_new_full(g_str_hash,
+	if (rf->hrname == NULL)
+		rf->hrname = g_hash_table_new_full(g_str_hash,
 						 g_str_equal,
 						 g_free,
 						 NULL);
-	if (rf->hrname_r == NULL)	
-	    	rf->hrname_r = g_hash_table_new_full(g_str_hash,
+	if (rf->hrname_r == NULL)
+		rf->hrname_r = g_hash_table_new_full(g_str_hash,
 						 g_str_equal,
 						 g_free,
 						 NULL);
-	if (rf->hrdel_feed == NULL)	
-	    	rf->hrdel_feed = g_hash_table_new_full(g_str_hash,
+	if (rf->hrdel_feed == NULL)
+		rf->hrdel_feed = g_hash_table_new_full(g_str_hash,
 						 g_str_equal,
 						 g_free,
 						 NULL);
-	if (rf->hrdel_days == NULL)	
-	    	rf->hrdel_days = g_hash_table_new_full(g_str_hash,
+	if (rf->hrdel_days == NULL)
+		rf->hrdel_days = g_hash_table_new_full(g_str_hash,
 						 g_str_equal,
 						 g_free,
 						 NULL);
-	if (rf->hrdel_messages == NULL)	
-	    	rf->hrdel_messages = g_hash_table_new_full(g_str_hash,
+	if (rf->hrdel_messages == NULL)
+		rf->hrdel_messages = g_hash_table_new_full(g_str_hash,
 						 g_str_equal,
 						 g_free,
 						 NULL);
-	if (rf->hrdel_unread == NULL)	
-	    	rf->hrdel_unread = g_hash_table_new_full(g_str_hash,
+	if (rf->hrdel_unread == NULL)
+		rf->hrdel_unread = g_hash_table_new_full(g_str_hash,
 						 g_str_equal,
 						 g_free,
 						 NULL);
-	if (rf->hrttl == NULL)	
-	    	rf->hrttl = g_hash_table_new_full(g_str_hash,
+	if (rf->hrttl == NULL)
+		rf->hrttl = g_hash_table_new_full(g_str_hash,
 						 g_str_equal,
 						 g_free,
 						 NULL);
-	if (rf->hrttl_multiply == NULL)	
-	    	rf->hrttl_multiply = g_hash_table_new_full(g_str_hash,
+	if (rf->hrttl_multiply == NULL)
+		rf->hrttl_multiply = g_hash_table_new_full(g_str_hash,
 						 g_str_equal,
 						 g_free,
 						 NULL);
-	if (rf->hrupdate == NULL)	
-	    	rf->hrupdate = g_hash_table_new_full(g_str_hash,
+	if (rf->hrupdate == NULL)
+		rf->hrupdate = g_hash_table_new_full(g_str_hash,
 						 g_str_equal,
 						 g_free,
 						 NULL);
@@ -2870,7 +2931,10 @@ setup_feed(add_feed *feed)
         GString *post = NULL, *content = NULL;
         GError *err = NULL;
 	gchar *chn_name = NULL, *tmp_chn_name = NULL, *tmp = NULL;
-	gchar *real_name;
+	gchar *real_name, *rssurl, *tmpkey, *ver;
+	xmlDocPtr doc;
+	xmlNodePtr root;
+	gpointer crc_feed;
 
 	check_folders();
 
@@ -2883,21 +2947,21 @@ setup_feed(add_feed *feed)
 
 	if (!feed->validate)
 		goto add;
-		
+
 top:	d(g_print("adding feed->feed_url:%s\n", feed->feed_url));
         content = fetch_blocking(feed->feed_url, NULL, post, textcb, rf, &err);
         if (err) {
 		g_print("setup_feed() -> err:%s\n", err->message);
-		gchar *tmpkey = gen_md5(feed->feed_url);
-		rss_error(tmpkey, 
-			feed->feed_name ? feed->feed_name: _("Unamed feed"), 
+		tmpkey = gen_md5(feed->feed_url);
+		rss_error(tmpkey,
+			feed->feed_name ? feed->feed_name: _("Unamed feed"),
 			_("Error while fetching feed."),
 			 err->message);
 		g_free(tmpkey);
 		goto out;
         }
-        xmlDocPtr doc = NULL;
-        xmlNodePtr root = NULL;
+        doc = NULL;
+        root = NULL;
         xmlSubstituteEntitiesDefaultValue = 0;
         doc = xml_parse_sux (content->str, content->len);
 	d(g_print("content:\n%s\n", content->str));
@@ -2907,7 +2971,7 @@ top:	d(g_print("adding feed->feed_url:%s\n", feed->feed_url));
 		&& (strcasestr((char *)root->name, "rss")
 		|| strcasestr((char *)root->name, "rdf")
 		|| strcasestr((char *)root->name, "feed"))) {
-        	r->cache = doc;
+		r->cache = doc;
 		r->uri = feed->feed_url;
 		r->progress = feed->progress;
 
@@ -2930,20 +2994,20 @@ add:
 		tmp_chn_name = chn_name;
 		chn_name = sanitize_folder(chn_name);
 		tmp = chn_name;
-               	chn_name = generate_safe_chn_name(chn_name);
-		
-		gpointer crc_feed = gen_md5(feed->feed_url);
-		g_hash_table_insert(rf->hrname, 
-			g_strdup(chn_name), 
+		chn_name = generate_safe_chn_name(chn_name);
+
+		crc_feed = gen_md5(feed->feed_url);
+		g_hash_table_insert(rf->hrname,
+			g_strdup(chn_name),
 			g_strdup(crc_feed));
-		g_hash_table_insert(rf->hrname_r, 
-			g_strdup(crc_feed), 
+		g_hash_table_insert(rf->hrname_r,
+			g_strdup(crc_feed),
 			g_strdup(chn_name));
-		g_hash_table_insert(rf->hr, 
-			g_strdup(crc_feed), 
+		g_hash_table_insert(rf->hr,
+			g_strdup(crc_feed),
 			g_strdup(feed->feed_url));
-		g_hash_table_insert(rf->hre, 
-			g_strdup(crc_feed), 
+		g_hash_table_insert(rf->hre,
+			g_strdup(crc_feed),
 			GINT_TO_POINTER(feed->enabled));
 		g_hash_table_insert(rf->hrdel_feed,
 			g_strdup(crc_feed),
@@ -2973,18 +3037,18 @@ add:
 			g_strdup(crc_feed),
 			GINT_TO_POINTER(feed->update));
 
-		gchar *ver = NULL;
+		ver = NULL;
 		if (r->type && r->version)
 			ver = g_strconcat(r->type, " ", r->version, NULL);
 		else
 			ver = g_strdup("-");
 
-		g_hash_table_insert(rf->hrt, 
-			g_strdup(crc_feed), 
+		g_hash_table_insert(rf->hrt,
+			g_strdup(crc_feed),
 			ver);
 
-		g_hash_table_insert(rf->hrh, 
-			g_strdup(crc_feed), 
+		g_hash_table_insert(rf->hrh,
+			g_strdup(crc_feed),
 			GINT_TO_POINTER(feed->fetch_html));
 
 		if (feed->edit) {
@@ -3016,9 +3080,9 @@ add:
 		g_free(chn_name);
 
 		if (r->cache)
-                	xmlFreeDoc(r->cache);
-        	if (r->type)
-                	g_free(r->type);
+			xmlFreeDoc(r->cache);
+		if (r->type)
+			g_free(r->type);
 		if (r->uids)
 			g_array_free(r->uids, TRUE);
 		if (r)
@@ -3032,16 +3096,16 @@ add:
 	}
 
 	//search for a feed entry
-	gchar *rssurl = search_rss(content->str, content->len);
+	rssurl = search_rss(content->str, content->len);
 	if (rssurl) {
 		if (doc)
-	               	xmlFreeDoc(doc);
-//       		if (r->type)
-  //             		g_free(r->type);
+			xmlFreeDoc(doc);
+//			if (r->type)
+  //				g_free(r->type);
 		if (content)
 			g_string_free(content, 1);
 		feed->feed_url = rssurl;
-		
+
                 if (g_hash_table_find(rf->hr,
                                         check_if_match,
                                         feed->feed_url)) {
@@ -3052,8 +3116,8 @@ add:
 		goto top;
 	}
 
- 	rss_error(NULL, NULL, 
-		_("Error while fetching feed."), 
+	rss_error(NULL, NULL,
+		_("Error while fetching feed."),
 		_("Invalid Feed"));
 	ret = 0;
 
@@ -3093,7 +3157,7 @@ finish_feed (SoupSession *soup_sess, SoupMessage *msg, gpointer user_data)
 	rfmsg->length = msg->response.length;
 #else
 	rfmsg->body = (gchar *)(msg->response_body->data);
-	rfmsg->length = msg->response_body->length; 
+	rfmsg->length = msg->response_body->length;
 #endif
 	generic_finish_feed(rfmsg, user_data);
 	g_free(rfmsg);
@@ -3115,7 +3179,11 @@ generic_finish_feed(rfMessage *msg, gpointer user_data)
 	gchar *chn_name = NULL;
 	//FIXME user_data might be out of bounds here
 	gchar *key =  lookup_key(user_data);
+	gchar *tmsg;
 	gboolean deleted = 0;
+	GString *response;
+	RDF *r;
+
 	//feed might get deleted while fetching
 	//so we need to test for the presence of key
 	if (!key)
@@ -3131,43 +3199,43 @@ generic_finish_feed(rfMessage *msg, gpointer user_data)
 
 	if (rf->feed_queue) {
 		rf->feed_queue--;
-		gchar *tmsg = g_strdup_printf(_("Fetching Feeds (%d enabled)"), rss_find_enabled());
-		taskbar_op_set_progress("main", tmsg, rf->feed_queue ? 1-(gdouble)((rf->feed_queue*100/rss_find_enabled()))/100: 1);
+		tmsg = g_strdup_printf(_("Fetching Feeds (%d enabled)"), rss_find_enabled());
+		taskbar_op_set_progress((gchar *)"main", tmsg, rf->feed_queue ? 1-(gdouble)((rf->feed_queue*100/rss_find_enabled()))/100: 1);
 		g_free(tmsg);
 	}
 
 	if (rf->feed_queue == 0) {
 		d(g_print("taskbar_op_finish()\n"));
-		taskbar_op_finish("main");
+		taskbar_op_finish((gchar *)"main");
 		rf->autoupdate = FALSE;
 		farticle=0;
 		ftotal=0;
 #ifndef EVOLUTION_2_12
 		if(rf->progress_dialog) {
-        	     	gtk_widget_destroy(rf->progress_dialog);
-       			rf->progress_dialog = NULL;
+			gtk_widget_destroy(rf->progress_dialog);
+			rf->progress_dialog = NULL;
 			rf->progress_bar = NULL;
-        	}
+		}
 #else
 		if(rf->label && rf->info) {
                         gtk_label_set_markup (GTK_LABEL (rf->label), _("Complete."));
-                	if (rf->info->cancel_button)
-                        	gtk_widget_set_sensitive(rf->info->cancel_button, FALSE);
+			if (rf->info->cancel_button)
+				gtk_widget_set_sensitive(rf->info->cancel_button, FALSE);
 			gtk_progress_bar_set_fraction((GtkProgressBar *)rf->progress_bar, 1);
 
-                	g_hash_table_steal(rf->info->data->active, rf->info->uri);
-                	rf->info->data->infos = g_list_remove(rf->info->data->infos, rf->info);
+			g_hash_table_steal(rf->info->data->active, rf->info->uri);
+			rf->info->data->infos = g_list_remove(rf->info->data->infos, rf->info);
 
 			if (g_hash_table_size(rf->info->data->active) == 0) {
-                        	if (rf->info->data->gd)
-                                	gtk_widget_destroy((GtkWidget *)rf->info->data->gd);
-                	}
-                	//clean data that might hang on rf struct
-                	rf->sr_feed = NULL;
-                	rf->label = NULL;
-                	flabel = NULL;
-                	rf->progress_bar = NULL;
-                	rf->info = NULL;
+				if (rf->info->data->gd)
+					gtk_widget_destroy((GtkWidget *)rf->info->data->gd);
+			}
+			//clean data that might hang on rf struct
+			rf->sr_feed = NULL;
+			rf->label = NULL;
+			flabel = NULL;
+			rf->progress_bar = NULL;
+			rf->info = NULL;
 		}
 #endif
 	}
@@ -3177,21 +3245,21 @@ generic_finish_feed(rfMessage *msg, gpointer user_data)
 
 	if (msg->status_code != SOUP_STATUS_OK &&
 	    msg->status_code != SOUP_STATUS_CANCELLED) {
-        	g_set_error(&err, NET_ERROR, NET_ERROR_GENERIC,
-                	soup_status_get_phrase(msg->status_code));
-                gchar *tmsg = g_strdup_printf("\n%s\n%s", (gchar *)user_data, 
+		g_set_error(&err, NET_ERROR, NET_ERROR_GENERIC, "%s",
+			soup_status_get_phrase(msg->status_code));
+                tmsg = g_strdup_printf("\n%s\n%s", (gchar *)user_data,
 							(gchar *)err->message);
                 rss_error(user_data, NULL, _("Error fetching feed."), tmsg);
                 g_free(tmsg);
-        	goto out;
-    	}
+		goto out;
+	}
 
 	if (rf->cancel) {
 #ifdef EVOLUTION_2_12
 		if(rf->label && rf->feed_queue == 0 && rf->info) {
 			farticle=0;
 			ftotal=0;
-                	gtk_label_set_markup (GTK_LABEL (rf->label), _("Canceled."));
+			gtk_label_set_markup (GTK_LABEL (rf->label), _("Canceled."));
                 if (rf->info->cancel_button)
                         gtk_widget_set_sensitive(rf->info->cancel_button, FALSE);
 
@@ -3202,7 +3270,7 @@ generic_finish_feed(rfMessage *msg, gpointer user_data)
                         if (rf->info->data->gd)
                                 gtk_widget_destroy((GtkWidget *)rf->info->data->gd);
                 }
-		taskbar_op_finish("main");
+		taskbar_op_finish((gchar *)"main");
                 //clean data that might hang on rf struct
                 rf->sr_feed = NULL;
                 rf->label = NULL;
@@ -3213,7 +3281,7 @@ generic_finish_feed(rfMessage *msg, gpointer user_data)
 #endif
 		goto out;
 	}
-	
+
 	if (!msg->length)
 		goto out;
 
@@ -3221,14 +3289,14 @@ generic_finish_feed(rfMessage *msg, gpointer user_data)
 		goto out;
 
 
-	GString *response = g_string_new_len(msg->body, msg->length);
+	response = g_string_new_len(msg->body, msg->length);
 
 	g_print("feed %s\n", (gchar *)user_data);
 
 	while (gtk_events_pending ())
             gtk_main_iteration ();
 
-	RDF *r = g_new0 (RDF, 1);
+	r = g_new0 (RDF, 1);
         r->shown = TRUE;
         xmlSubstituteEntitiesDefaultValue = 1;
         r->cache = xml_parse_sux (response->str, response->len);
@@ -3247,8 +3315,8 @@ generic_finish_feed(rfMessage *msg, gpointer user_data)
 		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);
+
+		chn_name = display_doc (r);
 
 		if (chn_name) {
 			if (g_ascii_strcasecmp(user_data, chn_name) != 0) {
@@ -3257,7 +3325,7 @@ generic_finish_feed(rfMessage *msg, gpointer 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_hash_table_insert(rf->hrname_r, g_strdup(md5),
 								g_strdup(chn_name));
 				save_gconf_feed();
 				update_ttl(md5, r->ttl);
@@ -3281,7 +3349,7 @@ generic_finish_feed(rfMessage *msg, gpointer user_data)
 	g_free(r);
 	g_string_free(response, 1);
 
-//tout:	
+//tout:
 
 #ifdef EVOLUTION_2_12
 	if (rf->sr_feed && !deleted) {
@@ -3294,17 +3362,17 @@ generic_finish_feed(rfMessage *msg, gpointer user_data)
 		farticle=0;
 		ftotal=0;
 		gtk_label_set_markup (GTK_LABEL (rf->label), _("Complete"));
-        	if (rf->info->cancel_button)
-                	gtk_widget_set_sensitive(rf->info->cancel_button, FALSE);
+		if (rf->info->cancel_button)
+			gtk_widget_set_sensitive(rf->info->cancel_button, FALSE);
 
-        	g_hash_table_steal(rf->info->data->active, rf->info->uri);
-        	rf->info->data->infos = g_list_remove(rf->info->data->infos, rf->info);
+		g_hash_table_steal(rf->info->data->active, rf->info->uri);
+		rf->info->data->infos = g_list_remove(rf->info->data->infos, rf->info);
 
-        	if (g_hash_table_size(rf->info->data->active) == 0) {
-                	if (rf->info->data->gd)
-                        	gtk_widget_destroy((GtkWidget *)rf->info->data->gd);
-        	}
-		taskbar_op_finish("main");
+		if (g_hash_table_size(rf->info->data->active) == 0) {
+			if (rf->info->data->gd)
+				gtk_widget_destroy((GtkWidget *)rf->info->data->gd);
+		}
+		taskbar_op_finish((gchar *)"main");
 		//clean data that might hang on rf struct
 		rf->sr_feed = NULL;
 		rf->label = NULL;
@@ -3313,7 +3381,7 @@ generic_finish_feed(rfMessage *msg, gpointer user_data)
 		rf->info = NULL;
 	}
 #endif
-out:	
+out:
 	if (chn_name) { //user_data
 		//not sure why it dies here
 		if (!rf->cancel && !rf->cancel_all)
@@ -3326,11 +3394,12 @@ gboolean
 fetch_one_feed(gpointer key, gpointer value, gpointer user_data)
 {
 	GError *err = NULL;
+	gchar *msg;
 
 	// check if we're enabled and no cancelation signal pending
 	// and no imports pending
 	if (g_hash_table_lookup(rf->hre, lookup_key(key)) && !rf->cancel && !rf->import) {
-		d(g_print("\nFetching: %s..%s\n", 
+		d(g_print("\nFetching: %s..%s\n",
 			(gchar *)g_hash_table_lookup(rf->hr, lookup_key(key)), (gchar *)key));
 		rf->feed_queue++;
 
@@ -3345,12 +3414,12 @@ fetch_one_feed(gpointer key, gpointer value, gpointer user_data)
 							// feed gets deleted
 		if (err) {
 			rf->feed_queue--;
-                     	gchar *msg = g_strdup_printf("\n%s\n%s", 
-				 	(gchar *)key, err->message);
+			msg = g_strdup_printf("\n%s\n%s",
+					(gchar *)key, err->message);
                         rss_error(key, NULL, _("Error fetching feed."), msg);
-                     	g_free(msg);
+			g_free(msg);
 		}
-		return TRUE;	
+		return TRUE;
 	} else if (rf->cancel && !rf->feed_queue) {
 		rf->cancel = 0;		//all feeds were either procesed or skipped
 	}
@@ -3359,8 +3428,8 @@ fetch_one_feed(gpointer key, gpointer value, gpointer user_data)
 
 gboolean
 fetch_feed(gpointer key, gpointer value, gpointer user_data)
-{ 
-	//exclude feeds that have special update interval or 
+{
+	//exclude feeds that have special update interval or
 	//no update at all
 	if (GPOINTER_TO_INT(g_hash_table_lookup(rf->hrupdate, lookup_key(key))) >= 2
 		&& !force_update)
@@ -3376,17 +3445,22 @@ finish_website (SoupMessage *msg, gpointer user_data)
 finish_website (SoupSession *soup_sess, SoupMessage *msg, gpointer user_data)
 #endif
 {
+	GString *response;
+	gchar *tmsg, *str;
+	gint len;
+
 	g_return_if_fail(rf->mozembed);
-	GString *response = g_string_new_len(msg->response_body->data, msg->response_body->length);
+
+	response = g_string_new_len(msg->response_body->data, msg->response_body->length);
 	d(g_print("browser full:%d\n", (int)response->len));
 	d(g_print("browser fill:%d\n", (int)browser_fill));
 	if (!response->len) {
-		gchar *msg = g_strdup(_("Formatting error."));
-		browser_write(msg, strlen(msg), "file://");
-		g_free(msg);
+		tmsg = g_strdup(_("Formatting error."));
+		browser_write(tmsg, strlen(tmsg), (gchar *)"file://");
+		g_free(tmsg);
 	} else {
-		gchar *str = (response->str);
-		gint len = strlen(response->str);
+		str = (response->str);
+		len = strlen(response->str);
 		*str+= browser_fill;
 		len-= browser_fill;
 		browser_write(str, len, user_data);
@@ -3397,12 +3471,20 @@ finish_website (SoupSession *soup_sess, SoupMessage *msg, gpointer user_data)
 
 void
 #if LIBSOUP_VERSION < 2003000
+finish_comments (SoupMessage *msg, EMFormatHTML *user_data);
+#else
+finish_comments (SoupSession *soup_sess, SoupMessage *msg, EMFormatHTML *user_data);
+#endif
+
+void
+#if LIBSOUP_VERSION < 2003000
 finish_comments (SoupMessage *msg, EMFormatHTML *user_data)
 #else
 finish_comments (SoupSession *soup_sess, SoupMessage *msg, EMFormatHTML *user_data)
 #endif
 {
 	guint reload=0;
+	GString *response;
 
 	comments_session = g_slist_remove(comments_session, soup_sess);
 
@@ -3412,18 +3494,18 @@ finish_comments (SoupSession *soup_sess, SoupMessage *msg, EMFormatHTML *user_da
 //	if (msg->status_code == SOUP_STATUS_CANCELLED)
 //		goto out;
 
-	GString *response = g_string_new_len(msg->response_body->data, msg->response_body->length);
+	response = g_string_new_len(msg->response_body->data, msg->response_body->length);
 
 	if (!commstream)
 		reload = 1;
 
-	commstream = response->str; 
+	commstream = response->str;
 	g_string_free(response, 0);
 
 	if (reload && !rf->cur_format) {
 		em_format_redraw((EMFormat *)user_data);
 	}
-	
+
 	while (gtk_events_pending ())
             gtk_main_iteration ();
 }
@@ -3438,10 +3520,12 @@ gchar *
 print_comments(gchar *url, gchar *stream)
 {
         RDF *r = NULL;
+	xmlDocPtr doc;
+	xmlNodePtr root;
         r = g_new0 (RDF, 1);
         r->shown = TRUE;
-	xmlDocPtr doc = NULL;
-        xmlNodePtr root = NULL;
+	doc = NULL;
+        root = NULL;
         xmlSubstituteEntitiesDefaultValue = 0;
         doc = xml_parse_sux (stream, strlen(stream));
         d(g_print("content:\n%s\n", stream));
@@ -3465,9 +3549,11 @@ fetch_comments(gchar *url, EMFormatHTML *stream)
 {
 	GError *err = NULL;
 	SoupSession *comm_sess = NULL;
+	gchar *uniqcomm;
+
 	d(g_print("\nFetching comments from: %s\n", url));
-	gchar *uniqcomm = g_strdup_printf("COMMENT-%s", url);
-	
+	uniqcomm = g_strdup_printf("COMMENT-%s", url);
+
 	fetch_unblocking(
 			url,
 			NULL,
@@ -3478,12 +3564,12 @@ fetch_comments(gchar *url, EMFormatHTML *stream)
 			&err);
 	comm_sess = g_hash_table_lookup(rf->key_session, uniqcomm);
 	comments_session = g_slist_append(comments_session, comm_sess);
-	
+
 	if (err) {
-              	gchar *msg = g_strdup_printf("\n%s\n%s", 
-			 	url, err->message);
+		gchar *msg = g_strdup_printf("\n%s\n%s",
+				url, err->message);
                 rss_error(url, NULL, _("Error fetching feed."), msg);
-              	g_free(msg);
+		g_free(msg);
 	}
 }
 
@@ -3514,7 +3600,7 @@ gchar *
 rss_component_peek_base_directory(void)
 {
 #if (EVOLUTION_VERSION >= 22900) //kb//
-	return g_strdup_printf("%s/rss", 
+	return g_strdup_printf("%s/rss",
 		em_utils_get_data_dir());
 #else
 	MailComponent *component = mail_component_peek();
@@ -3524,7 +3610,7 @@ rss_component_peek_base_directory(void)
 		mail_component_peek_base_directory (component));
 #else
 	return g_strdup_printf("%s/mail/rss",
-            	mail_component_peek_base_directory (component));
+		mail_component_peek_base_directory (component));
 #endif
 #endif
 }
@@ -3543,10 +3629,12 @@ gchar *
 get_main_folder(void)
 {
 	gchar mf[512];
+	gchar *feed_file;
 	gchar *feed_dir = rss_component_peek_base_directory();
+
         if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
             g_mkdir_with_parents (feed_dir, 0755);
-        gchar *feed_file = g_strdup_printf("%s/main_folder", feed_dir);
+        feed_file = g_strdup_printf("%s/main_folder", feed_dir);
         g_free(feed_dir);
         if (g_file_test(feed_file, G_FILE_TEST_EXISTS)) {
 		FILE *f = fopen(feed_file, "r");
@@ -3565,15 +3653,15 @@ get_main_folder(void)
 void
 get_feed_folders(void)
 {
-	gchar tmp1[512];
-	gchar tmp2[512];
-	
+	gchar tmp1[512], tmp2[512];
+	gchar *feed_dir, *feed_file;
+
 	rf->feed_folders = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
 	rf->reversed_feed_folders = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
-	gchar *feed_dir = rss_component_peek_base_directory();
+	feed_dir = rss_component_peek_base_directory();
         if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
             g_mkdir_with_parents (feed_dir, 0755);
-        gchar *feed_file = g_strdup_printf("%s/feed_folders", feed_dir);
+        feed_file = g_strdup_printf("%s/feed_folders", feed_dir);
         g_free(feed_dir);
         if (g_file_test(feed_file, G_FILE_TEST_EXISTS)) {
 		FILE *f = fopen(feed_file, "r");
@@ -3587,8 +3675,8 @@ get_feed_folders(void)
 		fclose(f);
 	}
 	g_free(feed_file);
-	g_hash_table_foreach(rf->feed_folders, 
-				(GHFunc)populate_reversed, 
+	g_hash_table_foreach(rf->feed_folders,
+				(GHFunc)populate_reversed,
 				rf->reversed_feed_folders);
 }
 
@@ -3612,7 +3700,7 @@ lookup_original_folder(gchar *folder)
 
 	tmp = extract_main_folder(folder);
 	if (tmp) {
-        	ofolder = g_hash_table_lookup(rf->feed_folders, tmp);
+		ofolder = g_hash_table_lookup(rf->feed_folders, tmp);
 		if (ofolder) {
 			g_free(tmp);
 			return g_strdup(ofolder);
@@ -3659,29 +3747,32 @@ finish_update_feed_image (SoupSession *soup_sess, SoupMessage *msg, gpointer use
 	gchar *url = (gchar *)user_data;
 	gchar *key = gen_md5(url);
         gchar *img_file = g_strdup_printf("%s/%s.img", feed_dir, key);
+	gchar *urldir, *server;
+	rfMessage *rfmsg;
+	xmlChar *app;
+	xmlNode *doc;
+
         g_free(feed_dir);
-	gchar *urldir = g_path_get_dirname(url);
-	gchar *server = get_server_from_uri(url);
-	rfMessage *rfmsg = g_new0(rfMessage, 1);
+	urldir = g_path_get_dirname(url);
+	server = get_server_from_uri(url);
+	rfmsg = g_new0(rfMessage, 1);
 	rfmsg->status_code = msg->status_code;
 #if LIBSOUP_VERSION < 2003000
 	rfmsg->body = msg->response.body;
 	rfmsg->length = msg->response.length;
 #else
 	rfmsg->body = (gchar *)(msg->response_body->data);
-	rfmsg->length = msg->response_body->length; 
+	rfmsg->length = msg->response_body->length;
 #endif
-	xmlChar *app;
-	xmlNode *doc = (xmlNode *)parse_html_sux (rfmsg->body, rfmsg->length);
+	doc = (xmlNode *)parse_html_sux (rfmsg->body, rfmsg->length);
 	while (doc) {
-		doc = html_find(doc, "link");
+		doc = html_find(doc, (gchar *)"link");
                 if ((app = xmlGetProp(doc, (xmlChar *)"rel"))) {
 			if (!g_ascii_strcasecmp((char *)app, "shorcut icon")
 			|| !g_ascii_strcasecmp((char *)app, "icon")) {
 				icon = xmlGetProp(doc, (xmlChar *)"href");
 				break;
 			}
-	
 		}
 		xmlFree(app);
 	}
@@ -3760,9 +3851,9 @@ check_update_feed_image(gchar *key)
         g_free(feed_dir);
         if (!g_file_test(fav_file, G_FILE_TEST_EXISTS)) {
 		if ((f = fopen(fav_file, "w"))) {
-			fprintf(f, "%lu", start.tv_sec);	
-                	fclose(f);
-        	}
+			fprintf(f, "%lu", start.tv_sec);
+			fclose(f);
+		}
 		ret = TRUE;
 		goto out;
 	}
@@ -3770,14 +3861,14 @@ check_update_feed_image(gchar *key)
 		fgets(rfeed, 50, f);
 		remain = start.tv_sec - strtoul((const char *)&rfeed, NULL, 10);
 		if (FEED_IMAGE_TTL <= remain) {
-		    	(void)fseek(f, 0L, SEEK_SET);
-			fprintf(f, "%lu", start.tv_sec);	
-               		fclose(f);
+			(void)fseek(f, 0L, SEEK_SET);
+			fprintf(f, "%lu", start.tv_sec);
+			fclose(f);
 			ret =  TRUE;
 			goto out;
 		} else {
 			d(g_print("next favicon will be fetched in %lu seconds\n", FEED_IMAGE_TTL - remain));
-               		fclose(f);
+			fclose(f);
 			ret = FALSE;
 		}
 	}
@@ -3804,9 +3895,11 @@ update_feed_image(RDF *r)
 	gchar *key = gen_md5(r->uri);
 	FEED_IMAGE *fi = g_new0(FEED_IMAGE, 1);
 	gchar *image = r->image;
+	gchar *feed_dir;
+
 	if (!check_update_feed_image(key))
 		goto out;
-	gchar *feed_dir = rss_component_peek_base_directory();
+	feed_dir = rss_component_peek_base_directory();
         if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
             g_mkdir_with_parents (feed_dir, 0755);
         feed_file = g_strdup_printf("%s/%s.img", feed_dir, key);
@@ -3854,21 +3947,22 @@ void
 update_main_folder(gchar *new_name)
 {
 	FILE *f;
+	gchar *feed_dir, *feed_file;
+
 	if (rf->main_folder)
 		g_free(rf->main_folder);
 	rf->main_folder = g_strdup(new_name);
-	
-	gchar *feed_dir = rss_component_peek_base_directory();
+
+	feed_dir = rss_component_peek_base_directory();
         if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
             g_mkdir_with_parents (feed_dir, 0755);
-        gchar *feed_file = g_strdup_printf("%s/main_folder", feed_dir);
+        feed_file = g_strdup_printf("%s/main_folder", feed_dir);
         g_free(feed_dir);
 	if ((f = fopen(feed_file, "w"))) {
-		fprintf(f, "%s", rf->main_folder);	
+		fprintf(f, "%s", rf->main_folder);
                 fclose(f);
         }
 	g_free(feed_file);
-	
 }
 
 void
@@ -3893,6 +3987,8 @@ struct _rebase_name {
 	gchar *nname;
 };
 
+void rebase_feed(gchar *key, rebase_name *rn);
+
 void
 rebase_feed(gchar *key, rebase_name *rn)
 {
@@ -3936,10 +4032,12 @@ void
 sync_folders(void)
 {
 	FILE *f;
-	gchar *feed_dir = rss_component_peek_base_directory();
+	gchar *feed_dir, *feed_file;
+
+	feed_dir = rss_component_peek_base_directory();
         if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
             g_mkdir_with_parents (feed_dir, 0755);
-        gchar *feed_file = g_strdup_printf("%s/feed_folders", feed_dir);
+        feed_file = g_strdup_printf("%s/feed_folders", feed_dir);
         g_free(feed_dir);
         f = fopen(feed_file, "wb");
         if (!f)
@@ -3951,12 +4049,12 @@ sync_folders(void)
         fclose(f);
         g_free(feed_file);
 	g_hash_table_destroy(rf->reversed_feed_folders);
-	rf->reversed_feed_folders = g_hash_table_new_full(g_str_hash, 
-			g_str_equal, 
-			g_free, 
+	rf->reversed_feed_folders = g_hash_table_new_full(g_str_hash,
+			g_str_equal,
+			g_free,
 			g_free);
-	g_hash_table_foreach(rf->feed_folders, 
-			(GHFunc)populate_reversed, 
+	g_hash_table_foreach(rf->feed_folders,
+			(GHFunc)populate_reversed,
 			rf->reversed_feed_folders);
 }
 
@@ -3970,14 +4068,16 @@ update_feed_folder(gchar *old_name, gchar *new_name, gboolean valid_folder)
 {
 	gchar *oname = extract_main_folder(old_name);
 	gchar *nname = extract_main_folder(new_name);
+	gchar *orig_name, *ofolder;
+
 	if (!oname)
 		oname = g_strdup(old_name);
 	if (!nname)
 		nname = g_strdup(new_name);
-	gchar *orig_name = g_hash_table_lookup(rf->feed_folders, oname);
+	orig_name = g_hash_table_lookup(rf->feed_folders, oname);
 	if (!orig_name) {
 		if (valid_folder) {
-			gchar *ofolder = lookup_original_folder(old_name);
+			ofolder = lookup_original_folder(old_name);
 			if (!ofolder)
 				return 0;
 			else if (!lookup_key(ofolder))
@@ -4013,10 +4113,10 @@ check_feed_folder(gchar *folder_name)
         mail_folder = camel_store_get_folder (store, real_name, 0, NULL);
 	base_folder = main_folder;
 	if (mail_folder == NULL) {
-        	path = g_strsplit(real_folder, "/", 0);
+		path = g_strsplit(real_folder, "/", 0);
 		if (path) {
 			do {
-               			camel_store_create_folder (store, base_folder, path[i], NULL);
+				camel_store_create_folder (store, base_folder, path[i], NULL);
 				base_folder = g_strconcat(base_folder, "/", path[i], NULL);
 			} while (NULL != path[++i]);
 			g_strfreev(path);
@@ -4032,32 +4132,35 @@ void
 rss_delete_feed(gchar *full_path, gboolean folder)
 {
         CamelException ex;
-	gchar *tmp;
-        CamelStore *store = rss_component_peek_local_store();
-	gchar *name = extract_main_folder(full_path);
+	gchar *tmp, *tkey, *url;
+        CamelStore *store;
+	gchar *name, *real_name, *buf, *feed_dir, *feed_name;
+
+	store = rss_component_peek_local_store();
+	name = extract_main_folder(full_path);
 	d(g_print("name to delete:%s\n", name));
 	if (!name)
 		return;
-	gchar *real_name = g_hash_table_lookup(rf->feed_folders, name);
+	real_name = g_hash_table_lookup(rf->feed_folders, name);
 	if (!real_name)
 		real_name = name;
         camel_exception_init (&ex);
 	rss_delete_folders (store, full_path, &ex);
 	if (camel_exception_is_set (&ex)) {
-               	e_error_run(NULL,
-               		"mail:no-delete-folder", full_path, ex.desc, NULL);
-               	camel_exception_clear (&ex);
-       	}
+		e_error_run(NULL,
+			"mail:no-delete-folder", full_path, ex.desc, NULL);
+		camel_exception_clear (&ex);
+	}
         //also remove status file
-        gchar *tkey = g_hash_table_lookup(rf->hrname, real_name);
+        tkey = g_hash_table_lookup(rf->hrname, real_name);
 	if (!tkey)
 		return;
-        gchar *url =  g_hash_table_lookup(rf->hr, tkey);
+        url =  g_hash_table_lookup(rf->hr, tkey);
 	if (!url)
 		goto out;
-        gchar *buf = gen_md5(url);
-		gchar *feed_dir = rss_component_peek_base_directory();
-        gchar *feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
+        buf = gen_md5(url);
+	feed_dir = rss_component_peek_base_directory();
+        feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
         g_free(feed_dir);
         g_free(buf);
         unlink(feed_name);
@@ -4103,7 +4206,7 @@ store_folder_renamed(CamelObject *o, void *event_data, void *data)
 				rebase_feeds(info->old_base, info->new->full_name);
 			}
 		g_idle_add((GSourceFunc)store_redraw, GTK_TREE_VIEW(rf->treeview));
-        	save_gconf_feed();
+		save_gconf_feed();
 	}
 }
 
@@ -4114,10 +4217,13 @@ typedef struct custom_fetch_data {
 	gpointer user_data;
 } CDATA;
 
+gboolean custom_update_articles(CDATA *cdata);
+
 gboolean
 custom_update_articles(CDATA *cdata)
 {
 	GError *err = NULL;
+	gchar *msg;
 	//if (!rf->pending && !rf->feed_queue && rf->online)
 	if (rf->online) {
 		g_print("Fetch (custom) RSS articles...\n");
@@ -4126,14 +4232,14 @@ custom_update_articles(CDATA *cdata)
 		rf->autoupdate = TRUE;
 		//taskbar_op_message();
 		network_timeout();
-        	// check if we're enabled and no cancelation signal pending
-        	// and no imports pending
-        	if (g_hash_table_lookup(rf->hre, lookup_key(cdata->key)) && !rf->cancel && !rf->import) {
-                	d(g_print("\nFetching: %s..%s\n",
-                 		(char *)g_hash_table_lookup(rf->hr, lookup_key(cdata->key)), (char *)cdata->key));
-                	rf->feed_queue++;
-
-                	fetch_unblocking(
+		// check if we're enabled and no cancelation signal pending
+		// and no imports pending
+		if (g_hash_table_lookup(rf->hre, lookup_key(cdata->key)) && !rf->cancel && !rf->import) {
+			d(g_print("\nFetching: %s..%s\n",
+				(char *)g_hash_table_lookup(rf->hr, lookup_key(cdata->key)), (char *)cdata->key));
+			rf->feed_queue++;
+
+		fetch_unblocking(
                                        g_hash_table_lookup(rf->hr, lookup_key(cdata->key)),
                                        cdata->user_data,
                                        cdata->key,
@@ -4143,14 +4249,13 @@ custom_update_articles(CDATA *cdata)
                                        &err);                  // because we might lose it if
 			if (err) {
 				rf->feed_queue--;
-                     		gchar *msg = g_strdup_printf("\n%s\n%s", 
-				 	(char *)cdata->key, err->message);
-                        	rss_error(cdata->key, NULL, _("Error fetching feed."), msg);
-                     		g_free(msg);
+				msg = g_strdup_printf("\n%s\n%s",
+					(char *)cdata->key, err->message);
+				rss_error(cdata->key, NULL, _("Error fetching feed."), msg);
+				g_free(msg);
 			}
-                                                               // feed gets deleted
 		} else if (rf->cancel && !rf->feed_queue) {
-                	rf->cancel = 0;         //all feeds where either procesed or skipped
+			rf->cancel = 0;         //all feeds where either procesed or skipped
 		}
 	}
 	return TRUE;
@@ -4160,14 +4265,15 @@ gboolean
 custom_fetch_feed(gpointer key, gpointer value, gpointer user_data)
 { 
 	guint time_id = 0;
+	guint ttl, ttl_multiply;
 	if (!custom_timeout)
 		custom_timeout = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
 
 	if (GPOINTER_TO_INT(g_hash_table_lookup(rf->hrupdate, lookup_key(key))) == 2
 	 && g_hash_table_lookup(rf->hre, lookup_key(key))) {
 		d(g_print("custom key:%s\n", (char *)key));
-		guint ttl = GPOINTER_TO_INT(g_hash_table_lookup(rf->hrttl, lookup_key(key)));
-		guint ttl_multiply = GPOINTER_TO_INT(g_hash_table_lookup(rf->hrttl_multiply, lookup_key(key)));
+		ttl = GPOINTER_TO_INT(g_hash_table_lookup(rf->hrttl, lookup_key(key)));
+		ttl_multiply = GPOINTER_TO_INT(g_hash_table_lookup(rf->hrttl_multiply, lookup_key(key)));
 		if (ttl) {
 			CDATA *cdata = g_new0(CDATA, 1);
 			cdata->key = key;
@@ -4191,8 +4297,8 @@ custom_fetch_feed(gpointer key, gpointer value, gpointer user_data)
 			time_id = g_timeout_add (ttl * 60 * 1000 * ttl_multiply,
                            (GtkFunction) custom_update_articles,
                            cdata);
-			g_hash_table_replace(custom_timeout, 
-				g_strdup(lookup_key(key)), 
+			g_hash_table_replace(custom_timeout,
+				g_strdup(lookup_key(key)),
 				GINT_TO_POINTER(time_id));
 			return 1;
 		}
@@ -4252,13 +4358,13 @@ create_status_icon(void)
                                             NULL);
 
 		status_icon = gtk_status_icon_new ();
-        	gtk_status_icon_set_from_file (status_icon, iconfile);
+		gtk_status_icon_set_from_file (status_icon, iconfile);
 		g_free(iconfile);
 		g_signal_connect (G_OBJECT (status_icon), "activate", G_CALLBACK (icon_activated), NULL);
 	}
    //     gtk_status_icon_set_visible (status_icon, FALSE);
 }
-        
+
 gboolean
 flicker_stop(gpointer user_data)
 {
@@ -4280,7 +4386,7 @@ flaten_status(gpointer msg, gpointer user_data)
 void
 update_status_icon(const char *channel, gchar *title)
 {
-  	if (gconf_client_get_bool (rss_gconf, GCONF_KEY_STATUS_ICON, NULL)) {
+	if (gconf_client_get_bool (rss_gconf, GCONF_KEY_STATUS_ICON, NULL)) {
 		gchar *total = g_strdup_printf("%s: %s\n\n", channel, title);
 		create_status_icon();
 		g_queue_push_tail(status_msg, total);
@@ -4288,11 +4394,11 @@ update_status_icon(const char *channel, gchar *title)
 		if (g_queue_get_length(status_msg) == 6)
 			g_queue_pop_head(status_msg);
 		g_queue_foreach(status_msg, flaten_status, flat_status_msg);
-		gtk_status_icon_set_tooltip (status_icon, flat_status_msg);
+		gtk_status_icon_set_tooltip_text (status_icon, flat_status_msg);
 		gtk_status_icon_set_visible (status_icon, TRUE);
-  		if (gconf_client_get_bool (rss_gconf, GCONF_KEY_BLINK_ICON, NULL)
-	 	&& !gtk_status_icon_get_blinking(status_icon))
-        		gtk_status_icon_set_blinking (status_icon, TRUE);
+		if (gconf_client_get_bool (rss_gconf, GCONF_KEY_BLINK_ICON, NULL)
+		&& !gtk_status_icon_get_blinking(status_icon))
+			gtk_status_icon_set_blinking (status_icon, TRUE);
 		g_timeout_add(15 * 1000, flicker_stop, NULL);
 		g_free(flat_status_msg);
 		flat_status_msg = NULL;
@@ -4391,19 +4497,21 @@ void org_gnome_cooly_rss_startup(void *ep, ESEventTargetUpgrade *t);
 void org_gnome_cooly_rss_startup(void *ep, ESEventTargetUpgrade *t)
 #endif
 {
-  	if (gconf_client_get_bool (rss_gconf, GCONF_KEY_START_CHECK, NULL)) {
+	gdouble timeout;
+	CamelStore *store;
+
+	if (gconf_client_get_bool (rss_gconf, GCONF_KEY_START_CHECK, NULL)) {
 		//as I don't know how to set this I'll setup a 10 secs timeout
 		//and return false for disableation
 		g_timeout_add (3 * 1000,
                            (GtkFunction) update_articles,
                            0);
 	}
-	gdouble timeout = gconf_client_get_float(rss_gconf, GCONF_KEY_REP_CHECK_TIMEOUT, NULL);
-    	if (gconf_client_get_bool (rss_gconf, GCONF_KEY_REP_CHECK, NULL)) {
+	timeout = gconf_client_get_float(rss_gconf, GCONF_KEY_REP_CHECK_TIMEOUT, NULL);
+	if (gconf_client_get_bool (rss_gconf, GCONF_KEY_REP_CHECK, NULL)) {
 		rf->rc_id = g_timeout_add (60 * 1000 * timeout,
                            (GtkFunction) update_articles,
                            (gpointer)1);
-		
 	}
 	custom_feed_timeout();
 
@@ -4419,7 +4527,7 @@ void org_gnome_cooly_rss_startup(void *ep, ESEventTargetUpgrade *t)
                                                          NULL);
 
         /* hook in rename event to catch feeds folder rename */
-	CamelStore *store = rss_component_peek_local_store();
+	store = rss_component_peek_local_store();
 	camel_object_hook_event(store, "folder_renamed",
                                 (CamelObjectEventHookFunc)store_folder_renamed, NULL);
 	camel_object_hook_event(store, "folder_deleted",
@@ -4455,7 +4563,7 @@ check_folders(void)
 
 
 
-gboolean 
+gboolean
 check_if_enabled (gpointer key, gpointer value, gpointer user_data)
 {
 	return GPOINTER_TO_INT(value);
@@ -4489,12 +4597,12 @@ org_gnome_cooly_rss_refresh(void *ep, EMPopupTargetSelect *t)
                 return;
         }
 
-	readrss_dialog = e_error_new(NULL, 
+	readrss_dialog = e_error_new(NULL,
 		"org-gnome-evolution-rss:readrss",
                 _("Reading RSS feeds..."),
 		NULL);
 
-        g_signal_connect(readrss_dialog, 
+        g_signal_connect(readrss_dialog,
 		"response",
 		G_CALLBACK(readrss_dialog_cb),
 		NULL);
@@ -4552,11 +4660,11 @@ set_send_status(struct _send_info *info, const char *desc, int pc)
 static void
 my_op_status(CamelOperation *op, const char *what, int pc, void *data)
 {
+        struct _send_info *info = data;
+
 	g_print("OP STATUS\n");
 	g_print("CANCEL!!!!\n");
 
-        struct _send_info *info = data;
-
         switch (pc) {
         case CAMEL_OPERATION_START:
                 pc = 0;
@@ -4590,8 +4698,15 @@ org_gnome_cooly_rss(void *ep, EMEventTargetSendReceive *t)
 org_gnome_cooly_rss(void *ep, EMPopupTargetSelect *t)
 #endif
 {
+#ifdef EVOLUTION_2_12
+	struct _send_info *info;
+	struct _send_data *data = (struct _send_data *)t->data;
+#endif
+
 	GtkWidget *label,*progress_bar, *cancel_button, *status_label;
 	GtkWidget *recv_icon;
+	gchar *pretty_url;
+	guint row;
 
 	rf->t = t;
 
@@ -4605,34 +4720,30 @@ org_gnome_cooly_rss(void *ep, EMPopupTargetSelect *t)
 	}
 
 #ifdef EVOLUTION_2_12
-	struct _send_info *info;
-	struct _send_data *data = (struct _send_data *)t->data;
-
-
 	g_signal_connect(data->gd, "response", G_CALLBACK(dialog_response), NULL);
 
         info = g_malloc0 (sizeof (*info));
 //        info->type = type;
-                        
+//
         info->uri = g_strdup("feed"); //g_stddup
 
         info->cancel = camel_operation_new (my_op_status, info);
         info->state = SEND_ACTIVE;
 //        info->timeout_id = g_timeout_add (STATUS_TIMEOUT, operation_status_timeout, info);
-                        
+//
         g_hash_table_insert (data->active, info->uri, info);
 //        list = g_list_prepend (list, info);
 
 	recv_icon = gtk_image_new_from_stock (
                         "rss-main", GTK_ICON_SIZE_LARGE_TOOLBAR);
 
-	guint row = t->row;
+	row = t->row;
 	row+=2;
 	t->row = row;
 
 	gtk_table_resize(GTK_TABLE(t->table), t->row, 4);
 
-        char *pretty_url = g_strdup ("RSS");
+        pretty_url = g_strdup ("RSS");
         label = gtk_label_new (NULL);
 #if GTK_VERSION >= 2006000
         gtk_label_set_ellipsize (
@@ -4695,14 +4806,14 @@ org_gnome_cooly_rss(void *ep, EMPopupTargetSelect *t)
 	GtkWidget *label2 = gtk_label_new(NULL);
 	readrss_label = gtk_label_new(_("Please wait"));
 	if (!rf->progress_dialog) {
-    		readrss_progress = gtk_progress_bar_new();
-    		gtk_box_pack_start(GTK_BOX(((GtkDialog *)readrss_dialog)->vbox), label2, TRUE, TRUE, 10);
-    		gtk_box_pack_start(GTK_BOX(((GtkDialog *)readrss_dialog)->vbox), readrss_label, FALSE, FALSE, 0);
-    		gtk_box_pack_start(GTK_BOX(((GtkDialog *)readrss_dialog)->vbox), readrss_progress, FALSE, FALSE, 0);
-    		gtk_progress_bar_set_fraction((GtkProgressBar *)readrss_progress, 0);
+		readrss_progress = gtk_progress_bar_new();
+		gtk_box_pack_start(GTK_BOX(((GtkDialog *)readrss_dialog)->vbox), label2, TRUE, TRUE, 10);
+		gtk_box_pack_start(GTK_BOX(((GtkDialog *)readrss_dialog)->vbox), readrss_label, FALSE, FALSE, 0);
+		gtk_box_pack_start(GTK_BOX(((GtkDialog *)readrss_dialog)->vbox), readrss_progress, FALSE, FALSE, 0);
+		gtk_progress_bar_set_fraction((GtkProgressBar *)readrss_progress, 0);
 		/* xgettext:no-c-format */
-    		gtk_progress_bar_set_text((GtkProgressBar *)readrss_progress, _("0% done"));
-    		gtk_widget_show_all(readrss_dialog);
+		gtk_progress_bar_set_text((GtkProgressBar *)readrss_progress, _("0% done"));
+		gtk_widget_show_all(readrss_dialog);
 		rf->progress_dialog = readrss_dialog;
 		rf->progress_bar = readrss_progress;
 		rf->label	= label2;
@@ -4712,20 +4823,18 @@ org_gnome_cooly_rss(void *ep, EMPopupTargetSelect *t)
 	if (!rf->pending && !rf->feed_queue) {
 		rf->pending = TRUE;
 		check_folders();
-	
+
 		rf->err = NULL;
 		force_update = 1;
 		taskbar_op_message(NULL);
 		network_timeout();
-		g_hash_table_foreach(rf->hrname, (GHFunc)fetch_feed, statuscb);	
+		g_hash_table_foreach(rf->hrname, (GHFunc)fetch_feed, statuscb);
 		// reset cancelation signal
 		if (rf->cancel)
 			rf->cancel = 0;
 		force_update = 0;
 		rf->pending = FALSE;
 	}
-	
-
 }
 
 void
@@ -4738,8 +4847,8 @@ rss_finalize(void)
 		gtk_widget_destroy(rf->mozembed);
 
 /*	guint render = GPOINTER_TO_INT(
-		gconf_client_get_int(rss_gconf, 
-			GCONF_KEY_HTML_RENDER, 
+		gconf_client_get_int(rss_gconf,
+			GCONF_KEY_HTML_RENDER,
 			NULL));*/
 #ifdef HAVE_GECKO
 	/*/really find a better way to deal with this//
@@ -4790,8 +4899,10 @@ gboolean
 e_plugin_ui_init (GtkUIManager *ui_manager,
                   EShellView *shell_view)
 {
+	EShellWindow *shell_window;
+
 	rss_shell_view = shell_view;
-	EShellWindow *shell_window = e_shell_view_get_shell_window (rss_shell_view);
+	shell_window = e_shell_view_get_shell_window (rss_shell_view);
 	g_signal_connect (
 		e_shell_window_get_action (E_SHELL_WINDOW (shell_window), "mail-folder-refresh"), "activate",
 		G_CALLBACK (org_gnome_cooly_folder_refresh),
@@ -4818,16 +4929,18 @@ e_plugin_lib_enable(EPluginLib *ep, int enable)
 e_plugin_lib_enable(EPlugin *ep, int enable)
 #endif
 {
+	char *d;
+	guint render;
+
 	if (enable) {
 		bindtextdomain(GETTEXT_PACKAGE, GNOMELOCALEDIR);
 		bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
 	//	textdomain (GETTEXT_PACKAGE);
 		rss_gconf = gconf_client_get_default();
 		upgrade = 1;
-		char *d;
-        	d = getenv("RSS_VERBOSE_DEBUG");
-        	if (d)
-                	rss_verbose_debug = atoi(d);
+		d = getenv("RSS_VERBOSE_DEBUG");
+		if (d)
+			rss_verbose_debug = atoi(d);
 
 		//initiate main rss structure
 		if (!rf) {
@@ -4863,14 +4976,14 @@ e_plugin_lib_enable(EPlugin *ep, int enable)
 				rf->error_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
 			//there is no shutdown for e-plugin yet.
 			atexit(rss_finalize);
-			guint render = GPOINTER_TO_INT(
-				gconf_client_get_int(rss_gconf, 
-						GCONF_KEY_HTML_RENDER, 
+			render = GPOINTER_TO_INT(
+				gconf_client_get_int(rss_gconf,
+						GCONF_KEY_HTML_RENDER,
 						NULL));
-		
+
 			if (!render) {	// set render just in case it was forced in configure
 				render = RENDER_N;
-  				gconf_client_set_int(rss_gconf, 
+				gconf_client_set_int(rss_gconf,
 						GCONF_KEY_HTML_RENDER, render, NULL);
 			}
 #ifdef HAVE_GECKO
@@ -4926,12 +5039,19 @@ create_mail(create_feed *CF)
 	CamelMessageInfo *info;
 	CamelException *ex = NULL;
 	struct tm tm;
-	time_t time;
+	time_t time, actual_time;
 	CamelDataWrapper *rtext;
 	CamelContentType *type;
 	CamelStream *stream;
 	char *appended_uid = NULL;
 	gchar *author = CF->q ? CF->q : CF->sender;
+	gchar *tmp, *tmp2, *safe_subj;
+	CamelMimePart *part, *msgp;
+	CamelMultipart *mp;
+	GString *cats;
+	GList *p;
+	gchar *time_str, *buf;
+	gint offset;
 
 	mail_folder = check_feed_folder(CF->full_path);
 	camel_object_ref(mail_folder);
@@ -4941,28 +5061,27 @@ create_mail(create_feed *CF)
 	info = camel_message_info_new(NULL);
 	camel_message_info_set_flags(info, CAMEL_MESSAGE_SEEN, 1);
 
-	gchar *tmp = decode_entities(CF->subj);
-	gchar *tmp2 = markup_decode(tmp);
-	gchar *safe_subj = camel_header_encode_string((unsigned char *)tmp2);
+	tmp = decode_entities(CF->subj);
+	tmp2 = markup_decode(tmp);
+	safe_subj = camel_header_encode_string((unsigned char *)tmp2);
 	camel_mime_message_set_subject(new, safe_subj);
 	g_free(tmp);
 	g_free(tmp2);
 
-	addr = camel_internet_address_new(); 
+	addr = camel_internet_address_new();
 	d(g_print("date:%s\n", CF->date));
-   	camel_address_decode(CAMEL_ADDRESS(addr), author);
+	camel_address_decode(CAMEL_ADDRESS(addr), author);
 	camel_mime_message_set_from(new, addr);
 	camel_object_unref(addr);
 
-	int offset = 0;
+	offset = 0;
 
 	//handle pubdate
 	if (CF->date) {
 		//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;
+		else {
 			actual_time = camel_header_decode_date(CF->date, &offset);
 			camel_mime_message_set_date(new, actual_time, offset);
 		}
@@ -4970,14 +5089,14 @@ create_mail(create_feed *CF)
 		if (CF->dcdate)	{ //dublin core
 			strptime(CF->dcdate, "%Y-%m-%dT%T%z", &tm);
 			time = mktime(&tm);
-			time_t actual_time = camel_header_decode_date (ctime(&time), &offset);
+			actual_time = camel_header_decode_date (ctime(&time), &offset);
 			camel_mime_message_set_date(new, actual_time, offset);
 		} else /*use 'now' as time for failsafe*/
 			camel_mime_message_set_date(new, CAMEL_MESSAGE_DATE_CURRENT, 0);
 	}
 	time = camel_mime_message_get_date (new, NULL) ;
-	gchar *time_str = asctime(gmtime(&time));
-	char *buf = g_strdup_printf("from %s by localhost via evolution-rss-%s with libsoup-%d; %s\r\n", "RSS", VERSION, LIBSOUP_VERSION, time_str);
+	time_str = asctime(gmtime(&time));
+	buf = g_strdup_printf("from %s by localhost via evolution-rss-%s with libsoup-%d; %s\r\n", "RSS", VERSION, LIBSOUP_VERSION, time_str);
 	camel_medium_set_header(CAMEL_MEDIUM(new), "Received", buf);
 	camel_medium_set_header(CAMEL_MEDIUM(new), "Website", CF->website);
 	camel_medium_set_header(CAMEL_MEDIUM(new), "RSS-ID", CF->feedid);
@@ -4985,13 +5104,12 @@ create_mail(create_feed *CF)
 	if (CF->comments)
 		camel_medium_set_header(CAMEL_MEDIUM(new), "X-evolution-rss-comments", CF->comments);
 	if (CF->category) {
-		GString *cats = g_string_new(NULL);
-		GList *p;
+		cats = g_string_new(NULL);
 		for (p = (GList *)CF->category; p != NULL; p=p->next) {
 			if (p->next)
-				g_string_append_printf(cats, "%s, ", (char *)p->data); 
+				g_string_append_printf(cats, "%s, ", (char *)p->data);
 			else
-				g_string_append_printf(cats, "%s", (char *)p->data); 
+				g_string_append_printf(cats, "%s", (char *)p->data);
 		}
 		camel_medium_set_header(CAMEL_MEDIUM(new), "X-evolution-rss-category", cats->str);
 		g_string_free(cats, TRUE);
@@ -5008,20 +5126,20 @@ create_mail(create_feed *CF)
         camel_object_unref (stream);
 
 	if (CF->encl) {
-		CamelMultipart *mp = camel_multipart_new();
-        	camel_multipart_set_boundary(mp, NULL);
+		mp = camel_multipart_new();
+		camel_multipart_set_boundary(mp, NULL);
 
-		CamelMimePart *part = camel_mime_part_new();
-	      	camel_medium_set_content_object((CamelMedium *)part, (CamelDataWrapper *)rtext);
+		part = camel_mime_part_new();
+		camel_medium_set_content_object((CamelMedium *)part, (CamelDataWrapper *)rtext);
 
 		camel_multipart_add_part(mp, part);
 		camel_object_unref(part);
-		CamelMimePart *msgp = file_to_message(CF->encl);
+		msgp = file_to_message(CF->encl);
 		if (msgp) {
 			camel_multipart_add_part(mp, msgp);
 			camel_object_unref(msgp);
 		}
-	      	camel_medium_set_content_object((CamelMedium *)new, (CamelDataWrapper *)mp);
+		camel_medium_set_content_object((CamelMedium *)new, (CamelDataWrapper *)mp);
 		camel_object_unref(mp);
 	} else
 		camel_medium_set_content_object(CAMEL_MEDIUM(new), CAMEL_DATA_WRAPPER(rtext));
@@ -5060,16 +5178,20 @@ get_real_channel_name(gchar *uri, gchar *failed)
 CamelMimePart *
 file_to_message(const char *filename)
 {
-	g_return_val_if_fail (filename != NULL, NULL);
-	g_return_val_if_fail (g_file_test(filename, G_FILE_TEST_IS_REGULAR), NULL);
 	const char *type;
         CamelStreamFs *file;
         CamelMimePart *msg = camel_mime_part_new();
+	CamelDataWrapper *content;
+	gchar *tname;
+
+	g_return_val_if_fail (filename != NULL, NULL);
+	g_return_val_if_fail (g_file_test(filename, G_FILE_TEST_IS_REGULAR), NULL);
+
 	camel_mime_part_set_encoding(msg, CAMEL_TRANSFER_ENCODING_BINARY);
-	CamelDataWrapper *content = camel_data_wrapper_new();
-	
+	content = camel_data_wrapper_new();
+
         file = (CamelStreamFs *)
-			camel_stream_fs_new_with_name(filename, 
+			camel_stream_fs_new_with_name(filename,
 				O_RDWR|O_CREAT,
 				0666);
 
@@ -5080,7 +5202,7 @@ file_to_message(const char *filename)
         camel_object_unref((CamelObject *)file);
 	camel_medium_set_content_object((CamelMedium *)msg, content);
         camel_object_unref(content);
-	
+
 #if EVOLUTION_VERSION < 22900
 	type = em_utils_snoop_type(msg);
 #else
@@ -5089,13 +5211,15 @@ file_to_message(const char *filename)
 	if (type)
 		camel_data_wrapper_set_mime_type((CamelDataWrapper *)msg, type);
 
-	gchar *tname = g_path_get_basename(filename);
+	tname = g_path_get_basename(filename);
 	camel_mime_part_set_filename(msg, tname);
 	g_free(tname);
 
         return msg;
 }
 
+void print_cf(create_feed *CF);
+
 void
 print_cf(create_feed *CF)
 {
@@ -5168,7 +5292,7 @@ finish_enclosure (SoupSession *soup_sess, SoupMessage *msg, create_feed *user_da
 		// this will be a weak ref and get feed by free_cf
 		user_data->encl = name;
 	}
-	
+
 	g_free(tmpdir);
 	if (!feed_is_new(user_data->feed_fname, user_data->feed_uri)) {
 		create_mail(user_data);
@@ -5188,7 +5312,6 @@ finish_image_feedback (SoupSession *soup_sess, SoupMessage *msg, FEED_IMAGE *use
 	if (user_data->data == current_pobject)
 		em_format_redraw((EMFormat *)user_data->data);
 	g_free(user_data);
-	
 }
 
 static void
@@ -5217,14 +5340,14 @@ finish_image (SoupSession *soup_sess, SoupMessage *msg, CamelStream *user_data)
 				msg->response.length);
 #else
 		if (msg->response_body->data) {
-			camel_stream_write(user_data, 
-				msg->response_body->data, 
+			camel_stream_write(user_data,
+				msg->response_body->data,
 				msg->response_body->length);
 #endif
 			camel_stream_close(user_data);
 			camel_object_unref(user_data);
 		}
-	} else { 
+	} else {
 		camel_stream_write(user_data, pixfilebuf, pixfilelen);
 		camel_stream_close(user_data);
 		camel_object_unref(user_data);
@@ -5288,11 +5411,11 @@ display_folder_icon(GtkTreeStore *tree_store, gchar *key)
 		gchar *name = g_hash_table_lookup(rf->hrname_r, key);
 		gchar *full_name = g_strdup_printf("%s/%s", get_main_folder(),
 							lookup_feed_folder(name));
-        	rss_folder = camel_store_get_folder (store, full_name, 0, NULL);
+		rss_folder = camel_store_get_folder (store, full_name, 0, NULL);
 		if (!rss_folder) {
 			g_free(full_name);
 			camel_object_unref(rss_folder);
-			result = FALSE; 
+			result = FALSE;
 			goto out;
 		}
 		icon = e_icon_factory_get_icon (img_file, GTK_ICON_SIZE_DIALOG);
@@ -5305,11 +5428,11 @@ display_folder_icon(GtkTreeStore *tree_store, gchar *key)
 		si = g_hash_table_lookup (mod->store_hash, store);
 #else
 		si = em_folder_tree_model_lookup_store_info (
-                		EM_FOLDER_TREE_MODEL (mod), store);
+			EM_FOLDER_TREE_MODEL (mod), store);
 #endif
 		row = g_hash_table_lookup (si->full_hash, full_name);
 		path = gtk_tree_row_reference_get_path (row);
-        	gtk_tree_model_get_iter ((GtkTreeModel *)tree_store, &iter, path);
+		gtk_tree_model_get_iter ((GtkTreeModel *)tree_store, &iter, path);
 		gtk_tree_path_free (path);
 
 		gtk_tree_store_set(
@@ -5356,30 +5479,32 @@ data_cache_path(CamelDataCache *cdc, int create, const char *path, const char *k
  * because we could end up with wrong file as image
  */
 gchar *
-verify_image(gchar *uri, EMFormatHTML *format) 
+verify_image(gchar *uri, EMFormatHTML *format)
 {
 	gchar *mime_type, *contents;
 	gsize length;
+	gchar *nurl, *rurl;
+	gchar *base_dir, *feed_dir, *name;
 
 	g_return_val_if_fail(uri != NULL, NULL);
 
-       	if (!g_file_test((gchar *)uri, G_FILE_TEST_EXISTS)) {
+	if (!g_file_test((gchar *)uri, G_FILE_TEST_EXISTS)) {
 			camel_url_decode((gchar *)uri);
 			//FIXME lame method of extracting data cache path
 			//there must be a function in camel for getting data cache path
-			gchar *base_dir = rss_component_peek_base_directory();
-			gchar *feed_dir = g_build_path("/",
+			base_dir = rss_component_peek_base_directory();
+			feed_dir = g_build_path("/",
 				base_dir,
 				"static",
 				"http",
 				NULL);
-			gchar *nurl = strextr((gchar *)uri, feed_dir);
+			nurl = strextr((gchar *)uri, feed_dir);
 			g_free(feed_dir);
-			gchar *rurl = nurl + 4;
+			rurl = nurl + 4;
 			/* calling with link NULL as we do not have base link here
 			 * and not able to get it either
 			 */
-			gchar *name = fetch_image_redraw(rurl, NULL, format);
+			name = fetch_image_redraw(rurl, NULL, format);
 			g_free(nurl);
 			g_free(feed_dir);
 			g_free(base_dir);
@@ -5394,6 +5519,7 @@ verify_image(gchar *uri, EMFormatHTML *format)
 			&length,
 			NULL);
 		mime_type = g_content_type_guess(NULL, (guchar *)contents, length, NULL);
+		/*FIXME mime type here could be wrong */
 		if (g_ascii_strncasecmp (mime_type, "image/", 6))
 			return g_strdup(pixfile);
 		g_free(mime_type);
@@ -5410,6 +5536,7 @@ fetch_image_redraw(gchar *url, gchar *link, gpointer data)
 	CamelStream *stream = NULL;
 	gchar *tmpurl = NULL;
 	FEED_IMAGE *fi = NULL;
+	gchar *result, *base_dir, *feed_dir;
 
 	g_return_val_if_fail(url != NULL, NULL);
 	if (strstr(url, "://") == NULL) {
@@ -5425,8 +5552,8 @@ fetch_image_redraw(gchar *url, gchar *link, gpointer data)
 		tmpurl = g_strdup(url);
 	}
 	d(g_print("fetch_image_redraw() tmpurl:%s\n", tmpurl));
-	gchar *base_dir = rss_component_peek_base_directory();
-	gchar *feed_dir = g_build_path("/", 
+	base_dir = rss_component_peek_base_directory();
+	feed_dir = g_build_path("/", 
 				base_dir,
 				"static",
 				NULL);
@@ -5445,21 +5572,21 @@ fetch_image_redraw(gchar *url, gchar *link, gpointer data)
 	if (!stream) {
 		d(g_print("image cache MISS\n"));
 		stream = camel_data_cache_add(http_cache, HTTP_CACHE_PATH, tmpurl, NULL);
-	} else 
+	} else
 		d(g_print("image cache HIT\n"));
 
 	fi = g_new0(FEED_IMAGE, 1);
 	fi->feed_fs = stream;
 	fi->data = data;
 	fetch_unblocking(tmpurl,
-                       	        textcb,
-                               	NULL,
-                               	(gpointer)finish_image_feedback,
-                               	fi,
+			        textcb,
+				NULL,
+				(gpointer)finish_image_feedback,
+				fi,
 				0,
-                               	&err);
+				&err);
 	if (err) return NULL;
-	gchar *result = data_cache_path(http_cache, FALSE, HTTP_CACHE_PATH, tmpurl);
+	result = data_cache_path(http_cache, FALSE, HTTP_CACHE_PATH, tmpurl);
 	g_free(tmpurl);
 	return result;
 }
@@ -5472,8 +5599,10 @@ fetch_image(gchar *url, gchar *link)
         GError *err = NULL;
 	CamelStream *stream = NULL;
 	gchar *tmpurl = NULL;
-	if (!url)
-		return NULL;
+	gchar *result, *base_dir, *feed_dir;
+
+	g_return_val_if_fail(url != NULL, NULL);
+
 	if (strstr(url, "://") == NULL) {
 		if (*url == '.') //test case when url begins with ".."
 			tmpurl = g_strconcat(g_path_get_dirname(link), "/", url, NULL);
@@ -5487,8 +5616,8 @@ fetch_image(gchar *url, gchar *link)
 		tmpurl = g_strdup(url);
 	}
 	d(g_print("fetch_image() tmpurl:%s\n", tmpurl));
-	gchar *base_dir = rss_component_peek_base_directory();
-	gchar *feed_dir = g_build_path("/", 
+	base_dir = rss_component_peek_base_directory();
+	feed_dir = g_build_path("/",
 				base_dir,
 				"static",
 				NULL);
@@ -5503,18 +5632,18 @@ fetch_image(gchar *url, gchar *link)
 	if (!stream) {
 		d(g_print("image cache MISS\n"));
 		stream = camel_data_cache_add(http_cache, HTTP_CACHE_PATH, tmpurl, NULL);
-	} else 
+	} else
 		d(g_print("image cache HIT\n"));
 
 	fetch_unblocking(tmpurl,
-                       	        textcb,
-                               	NULL,
-                               	(gpointer)finish_image,
-                               	stream,
+			       textcb,
+				NULL,
+				(gpointer)finish_image,
+				stream,
 				0,
-                               	&err);
+				&err);
 	if (err) return NULL;
-	gchar *result = data_cache_path(http_cache, FALSE, HTTP_CACHE_PATH, tmpurl);
+	result = data_cache_path(http_cache, FALSE, HTTP_CACHE_PATH, tmpurl);
 	g_free(tmpurl);
 	return result;
 }
@@ -5529,14 +5658,15 @@ migrate_crc_md5(const char *name, gchar *url)
 {
 	gchar *crc = gen_crc(name);
 	gchar *crc2 = gen_crc(url);
-	gchar *md5 = gen_md5(url);
+	gchar *md5, *md5_name, *feed_dir, *feed_name;
 
-	gchar *feed_dir = rss_component_peek_base_directory();
+	md5 = gen_md5(url);
+	feed_dir = rss_component_peek_base_directory();
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
 	    g_mkdir_with_parents (feed_dir, 0755);
 
-	gchar *md5_name = g_build_path("/", feed_dir, md5, NULL);
-	gchar *feed_name = g_build_path("/", feed_dir, crc, NULL);
+	md5_name = g_build_path("/", feed_dir, md5, NULL);
+	feed_name = g_build_path("/", feed_dir, crc, NULL);
 	g_free(crc);
 	g_free(md5);
 
@@ -5547,7 +5677,7 @@ migrate_crc_md5(const char *name, gchar *url)
 		memset(rfeed, 0, 512);
 		if (fr && fw) {
 		    while (fgets(rfeed, 511, fr) != NULL) {
-		    	(void)fseek(fw, 0L, SEEK_SET);
+			(void)fseek(fw, 0L, SEEK_SET);
 			fwrite(rfeed, strlen(rfeed), 1, fw);
 		    }
 		    fclose(fw);
@@ -5566,7 +5696,7 @@ migrate_crc_md5(const char *name, gchar *url)
 		memset(rfeed, 0, 512);
 		if (fr && fw) {
 		    while (fgets(rfeed, 511, fr) != NULL) {
-		    	(void)fseek(fw, 0L, SEEK_SET);
+			(void)fseek(fw, 0L, SEEK_SET);
 			fwrite(rfeed, strlen(rfeed), 1, fw);
 		    }
 		    fclose(fw);
@@ -5587,6 +5717,7 @@ update_comments(RDF *r)
         guint i;
         create_feed *CF;
         xmlNodePtr el;
+	gchar *scomments;
         GString *comments = g_string_new(NULL);
         for (i=0; NULL != (el = g_array_index(r->item, xmlNodePtr, i)); i++) {
                 CF = parse_channel_line(el->children, NULL, NULL);
@@ -5598,16 +5729,16 @@ update_comments(RDF *r)
                         "<a href=%s><b>%s</b></a> on %s</div>",
 			content_colour & 0xEDECEB & 0xffffff, text_colour & 0xffffff,
 				CF->website, CF->subj, CF->date);
-                g_string_append_printf (comments, 
+                g_string_append_printf (comments,
 				"<div style=\"border: solid #%06x 0px; background-color: #%06x; padding: 10px; color: #%06x;\">"
                                 "%s</div>",
-                        	frame_colour & 0xffffff, content_colour & 0xffffff, text_colour & 0xffffff,
+				frame_colour & 0xffffff, content_colour & 0xffffff, text_colour & 0xffffff,
                                 CF->body);
                 g_string_append_printf(comments, "</div>&nbsp;");
 		free_cf(CF);
         }
 	commcnt=i;
-        gchar *scomments=comments->str;
+        scomments=comments->str;
         g_string_free(comments, FALSE);
         return scomments;
 }
@@ -5622,8 +5753,8 @@ display_comments (RDF *r)
 			g_free(r->maindate);
 		g_array_free(r->item, TRUE);
 		g_free(r->cache);
-        	if (r->type)
-                	g_free(r->type);
+		if (r->type)
+			g_free(r->type);
 		if (r)
 			g_free(r);
 		return comments;
@@ -5671,9 +5802,9 @@ delete_oldest_article(CamelFolder *folder, guint unread)
 	guint32 flags;
 	time_t date, min_date = 0;
 	uids = camel_folder_get_uids (folder);
-       	for (i = 0; i < uids->len; i++) {
+	for (i = 0; i < uids->len; i++) {
 		info = camel_folder_get_message_info(folder, uids->pdata[i]);
-               	if (info) {
+		if (info) {
 			if (rf->current_uid && !strcmp(rf->current_uid, uids->pdata[i]))
 				goto out;
 			date = camel_message_info_date_sent(info);
@@ -5684,7 +5815,7 @@ delete_oldest_article(CamelFolder *folder, guint unread)
 				goto out;
 			if (flags & CAMEL_MESSAGE_DELETED)
 				goto out;
-       			if (flags & CAMEL_MESSAGE_SEEN) {
+			if (flags & CAMEL_MESSAGE_SEEN) {
 				if (!j) {
 					min_date = date;
 					imax = i;
@@ -5697,28 +5828,28 @@ delete_oldest_article(CamelFolder *folder, guint unread)
 			} else {		//UNSEEN
 				if (unread) {
 					if (!q) {
-                                       		min_date = date;
+						min_date = date;
 						imax = i;
 						q++;
 					}
-                               		if (date < min_date) {
-                                       		imax = i;
-                                       		min_date = date;
-                               		}
+					if (date < min_date) {
+						imax = i;
+						min_date = date;
+					}
 				}
 			}
-               	}
+		}
 		d(g_print("uid:%d j:%d/%d, date:%s, imax:%d\n", i, j, q, ctime((const time_t *)min_date), imax));
-out:          	camel_message_info_free(info);
+out:		camel_message_info_free(info);
 	}
-       	camel_folder_freeze(folder);
+	camel_folder_freeze(folder);
 	if (min_date) {
 		camel_folder_delete_message (folder, uids->pdata[imax]);
 	}
-       	camel_folder_thaw(folder);
+	camel_folder_thaw(folder);
 	while (gtk_events_pending())
                   gtk_main_iteration ();
-       	camel_folder_free_uids (folder, uids);
+	camel_folder_free_uids (folder, uids);
 }
 
 void
@@ -5733,31 +5864,32 @@ get_feed_age(RDF *r, gpointer name)
 	guint32 flags;
 	gpointer key = lookup_key(name);
 	gchar *el, *feedid;
+	gchar *real_name;
 	gboolean match;
+	guint del_unread, del_feed;
 
 	gchar *real_folder = lookup_feed_folder(name);
 	d(g_print("Cleaning folder: %s\n", real_folder));
 
-	
-        gchar *real_name = g_strdup_printf("%s/%s", lookup_main_folder(), real_folder);
+        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;
 	time (&now);
-	
-	guint del_unread = GPOINTER_TO_INT(g_hash_table_lookup(rf->hrdel_unread, key));
-	guint del_feed = GPOINTER_TO_INT(g_hash_table_lookup(rf->hrdel_feed, key));
+
+	del_unread = GPOINTER_TO_INT(g_hash_table_lookup(rf->hrdel_unread, key));
+	del_feed = GPOINTER_TO_INT(g_hash_table_lookup(rf->hrdel_feed, key));
 	inhibit_read = 1;
 	if (del_feed == 3) {
 		uids = camel_folder_get_uids (folder);
-        	camel_folder_freeze(folder);
-        	for (i = 0; i < uids->len; i++) {
+		camel_folder_freeze(folder);
+		for (i = 0; i < uids->len; i++) {
 			el = NULL;
 			match = FALSE;
 			feedid  = (gchar *)camel_medium_get_header (
 							CAMEL_MEDIUM(camel_folder_get_message(
-								folder, 
-								uids->pdata[i], 
-								NULL)), 
+								folder,
+								uids->pdata[i],
+								NULL)),
 							"X-Evolution-Rss-Feed-id");
 			if (!r->uids)
 				break;
@@ -5772,25 +5904,25 @@ get_feed_age(RDF *r, gpointer name)
 				if ((del_unread) && !(flags & CAMEL_MESSAGE_FLAGGED)) {
 					camel_folder_delete_message(folder, uids->pdata[i]);
 				}
-                        	camel_folder_free_message_info(folder, info);
+				camel_folder_free_message_info(folder, info);
 			}
 		}
-        	camel_folder_free_uids (folder, uids);
-        	camel_folder_sync (folder, TRUE, NULL);
-        	camel_folder_thaw(folder);
-      		camel_folder_expunge (folder, NULL);
+		camel_folder_free_uids (folder, uids);
+		camel_folder_sync (folder, TRUE, NULL);
+		camel_folder_thaw(folder);
+		camel_folder_expunge (folder, NULL);
 	}
-	if (del_feed == 2) {	
+	if (del_feed == 2) {
 		guint del_days = GPOINTER_TO_INT(g_hash_table_lookup(rf->hrdel_days, key));
 		uids = camel_folder_get_uids (folder);
-        	camel_folder_freeze(folder);
-        	for (i = 0; i < uids->len; i++) {
+		camel_folder_freeze(folder);
+		for (i = 0; i < uids->len; i++) {
 			info = camel_folder_get_message_info(folder, uids->pdata[i]);
-                	if (info && rf->current_uid && strcmp(rf->current_uid, uids->pdata[i])) {
+			if (info && rf->current_uid && strcmp(rf->current_uid, uids->pdata[i])) {
 				date = camel_message_info_date_sent(info);
 				if (date < now - del_days * 86400) {
 					flags = camel_message_info_flags(info);
-                               		if (!(flags & CAMEL_MESSAGE_SEEN)) {
+					if (!(flags & CAMEL_MESSAGE_SEEN)) {
 						if ((del_unread) && !(flags & CAMEL_MESSAGE_FLAGGED)) {
 							//camel_message_info_set_flags(info, CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_DELETED, ~0);
 							camel_folder_delete_message(folder, uids->pdata[i]);
@@ -5801,25 +5933,25 @@ get_feed_age(RDF *r, gpointer name)
 							camel_folder_delete_message(folder, uids->pdata[i]);
 						}
 				}
-                        	camel_folder_free_message_info(folder, info);
-                	}
+				camel_folder_free_message_info(folder, info);
+			}
 		}
-        	camel_folder_free_uids (folder, uids);
-        	camel_folder_sync (folder, TRUE, NULL);
-        	camel_folder_thaw(folder);
-      		camel_folder_expunge (folder, NULL);
+		camel_folder_free_uids (folder, uids);
+		camel_folder_sync (folder, TRUE, NULL);
+		camel_folder_thaw(folder);
+		camel_folder_expunge (folder, NULL);
 	}
 	if (del_feed == 1) {
 		guint del_messages = GPOINTER_TO_INT(g_hash_table_lookup(rf->hrdel_messages, key));
 		guint total = camel_folder_get_message_count(folder);
 		i=1;
-		while (del_messages < camel_folder_get_message_count(folder) 
+		while (del_messages < camel_folder_get_message_count(folder)
 			- camel_folder_get_deleted_message_count(folder) && i <= total) {
 			delete_oldest_article(folder, del_unread);
 			i++;
 		}
-	     	camel_folder_sync (folder, TRUE, NULL);
-      		camel_folder_expunge (folder, NULL);
+		camel_folder_sync (folder, TRUE, NULL);
+		camel_folder_expunge (folder, NULL);
 	}
 	total = camel_folder_get_message_count (folder);
 	camel_object_unref (folder);
diff --git a/src/rss.h b/src/rss.h
index e114050..fde0a94 100644
--- a/src/rss.h
+++ b/src/rss.h
@@ -1,16 +1,16 @@
 /*  Evoution RSS Reader Plugin
- *  Copyright (C) 2007-2009  Lucian Langa <cooly gnome eu org> 
- *  
+ *  Copyright (C) 2007-2009  Lucian Langa <cooly gnome eu org>
+ *
  *  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
- *  the Free Software Foundation; either version 2 of the License, or 
+ *  the Free Software Foundation; either version 2 of the License, or
  *  (at your option) any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
- *  
+ *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
@@ -33,6 +33,10 @@
 #include <libsoup/soup.h>
 #if EVOLUTION_VERSION < 22900 //kb//
 #include <mail/mail-component.h>
+#else
+#include <shell/e-shell.h>
+#include <shell/e-shell-view.h>
+#include <shell/es-event.h>
 #endif
 
 #include <glade/glade.h>
@@ -57,14 +61,14 @@
 #define HTTP_CACHE_PATH "http"
 
 typedef struct _RDF {
-        char 		*uri;
-        char 		*html;
-        xmlDocPtr 	cache;
-        gboolean 	shown;
-        gchar 		*type;    	//char type
-        guint 		type_id; 	//num type
+        char		*uri;
+        char		*html;
+        xmlDocPtr	cache;
+        gboolean	shown;
+        gchar		*type;		//char type
+        guint		type_id;	//num type
 	gchar		*version;	//feed version
-        gchar		*feedid;  	//md5 string id of feed
+        gchar		*feedid;	//md5 string id of feed
 	gchar		*title;		//title of the feed
 	gchar		*prefix;	//directory path
 	gchar		*maindate;	//channel date
@@ -100,24 +104,24 @@ typedef struct _hrfeed {
 } hrfeed;
 
 typedef struct _rssfeed {
-        GHashTable      *hrname;            	//bind feed name to key
-        GHashTable      *hrname_r;            	//and mirrored structure for faster lookups
-        GHashTable      *hrcrc;            	//crc32 to key binding
-        GHashTable      *hr;            	//feeds hash
-        GHashTable      *hn;            	//feeds hash
-        GHashTable      *hre;   		//enabled feeds hash
-        GHashTable      *hrt;   		//feeds name hash
-        GHashTable      *hrh;   		//fetch html flag
-        GHashTable      *hruser;   		//auth user hash
-        GHashTable      *hrpass;   		//auth pass hash
+        GHashTable      *hrname;		//bind feed name to key
+        GHashTable      *hrname_r;		//and mirrored structure for faster lookups
+        GHashTable      *hrcrc;			//crc32 to key binding
+        GHashTable      *hr;			//feeds hash
+        GHashTable      *hn;			//feeds hash
+        GHashTable      *hre;			//enabled feeds hash
+        GHashTable      *hrt;			//feeds name hash
+        GHashTable      *hrh;			//fetch html flag
+        GHashTable      *hruser;		//auth user hash
+        GHashTable      *hrpass;		//auth pass 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
-        GHashTable      *hrdel_unread; 		//option to delete unread messages too
-        GHashTable      *hrttl;   		
-        GHashTable      *hrttl_multiply;	
-        GHashTable      *hrupdate;   		//feeds update method
+        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
+        GHashTable      *hrdel_unread;		//option to delete unread messages too
+        GHashTable      *hrttl;
+        GHashTable      *hrttl_multiply;
+        GHashTable      *hrupdate;		//feeds update method
         GtkWidget       *feed_dialog;
         GtkWidget       *progress_dialog;
         GtkWidget       *progress_bar;
@@ -129,7 +133,7 @@ typedef struct _rssfeed {
 	GtkWidget	*preferences;
 	gchar		*err;			//if using soup _unblocking error goes here
 	gchar		*err_feed;		//name of the feed that caused above err
-        gchar           *cfeed; 		//current feed name
+        gchar           *cfeed;			//current feed name
 	gboolean	online;			//networkmanager dependant
 	gboolean	fe;			//feed enabled (at least one)
 #ifdef EVOLUTION_2_12
@@ -140,10 +144,10 @@ typedef struct _rssfeed {
         gboolean        setup;
         gboolean        pending;
         gboolean        import;			//import going on
-	gboolean 	autoupdate;		//feed is currently auto fetched
+	gboolean	autoupdate;		//feed is currently auto fetched
 	guint		feed_queue;
-        gboolean        cancel; 		//cancelation signal
-        gboolean        cancel_all; 		//cancelation signal
+        gboolean        cancel;			//cancelation signal
+        gboolean        cancel_all;		//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
@@ -164,7 +168,7 @@ typedef struct _rssfeed {
 	GHashTable	*activity;
 	GHashTable	*error_hash;
 	guint		test;
-	char 		*current_uid;		// currently read article	
+	char		*current_uid;		// currently read article
 #if HAVE_DBUS
 	DBusConnection	*bus;			// DBUS
 #endif
@@ -198,7 +202,7 @@ typedef struct ADD_FEED {
 	GladeXML	*gui;
         gchar           *feed_url;
 	gchar		*feed_name;
-	gchar 		*prefix;
+	gchar		*prefix;
         gboolean        fetch_html;	//show webpage instead of summary
         gboolean        add;		//ok button
 	gboolean	changed;
@@ -308,6 +312,30 @@ typedef struct _rfMessage rfMessage;
 guint ftotal;
 guint farticle;
 
+void compare_enabled(gpointer key, gpointer value, guint *data);
+guint rss_find_enabled(void);
+void error_destroy(GtkObject *o, void *data);
+void error_response(GtkObject *o, int button, void *data);
+void cancel_active_op(gpointer key);
+void taskbar_op_message(gchar *msg);
+void taskbar_op_abort(gpointer key);
+void browser_write(gchar *string, gint length, gchar *base);
+void user_pass_cb(RSS_AUTH *auth_info, gint response, GtkDialog *dialog);
+gboolean proxy_auth_dialog(gchar *title, gchar *user, gchar *pass);
+gboolean timeout_soup(void);
+void network_timeout(void);
+gchar *feed_to_xml(gchar *key);
+void prepare_feed(gpointer key, gpointer value, gpointer user_data);
+gboolean feed_new_from_xml(char *xml);
+char *feeds_uid_from_xml (const char *xml);
+void load_gconf_feed(void);
+void migrate_old_config(gchar *feed_file);
+guint read_feeds(rssfeed *rf);
+void reload_cb (GtkWidget *button, gpointer data);
+void gecko_set_preferences(void);
+void browser_copy_selection(GtkWidget *widget, gpointer data);
+void browser_select_all(GtkWidget *widget, gpointer data);
+void webkit_set_preferences(void);
 GtkDialog* create_user_pass_dialog(RSS_AUTH *auth);
 void err_destroy (GtkWidget *widget, guint response, gpointer data);
 void save_gconf_feed(void);
@@ -315,7 +343,6 @@ void rss_error(gpointer key, gchar *name, gchar *error, gchar *emsg);
 void rss_select_folder(gchar *folder_name);
 gchar *lookup_chn_name_by_url(gchar *url);
 gboolean update_articles(gboolean disabler);
-xmlNode *html_find (xmlNode *node, char *match);
 gchar *lookup_main_folder(void);
 gchar *lookup_feed_folder(gchar *folder);
 gchar *lookup_original_folder(gchar *folder);
@@ -330,6 +357,12 @@ gchar *generate_safe_chn_name(gchar *chn_name);
 void update_sr_message(void);
 void update_feed_image(RDF *r);
 void update_status_icon(const char *channel, gchar *title);
+void cancel_comments_session(SoupSession *sess);
+gboolean flicker_stop(gpointer user_data);
+gchar *search_rss(char *buffer, int len);
+void prepare_hashes(void);
+void update_ttl(gpointer key, guint value);
+gboolean check_chn_name(gchar *chn_name);
 void
 #if LIBSOUP_VERSION < 2003000
 finish_website (SoupMessage *msg, gpointer user_data);
@@ -342,13 +375,19 @@ finish_enclosure (SoupMessage *msg, create_feed *user_data);
 #else
 finish_enclosure (SoupSession *soup_sess, SoupMessage *msg, create_feed *user_data);
 #endif
+void
+#if LIBSOUP_VERSION < 2003000
+finish_feed (SoupMessage *msg, gpointer user_data);
+#else
+finish_feed (SoupSession *soup_sess, SoupMessage *msg, gpointer user_data);
+#endif
 void generic_finish_feed(rfMessage *msg, gpointer user_data);
 void textcb(NetStatusType status, gpointer statusdata, gpointer data);
 #ifdef HAVE_GECKO
 void rss_mozilla_init(void);
 #endif
-void taskbar_op_set_progress(gpointer key, gchar *msg, gdouble progress);
-void taskbar_op_finish(gpointer key);
+void taskbar_op_set_progress(gchar *key, gchar *msg, gdouble progress);
+void taskbar_op_finish(gchar *key);
 void taskbar_push_message(gchar *message);
 void taskbar_pop_message(void);
 void write_feeds_folder_line(gpointer key, gpointer value, FILE *file);
@@ -363,6 +402,26 @@ gchar *get_main_folder(void);
 gpointer lookup_key(gpointer key);
 void rss_delete_feed(gchar *name, gboolean folder);
 gint update_feed_folder(gchar *old_name, gchar *new_name, gboolean valid_folder);
+void
+#if LIBSOUP_VERSION < 2003000
+finish_update_feed_image (SoupMessage *msg, gpointer user_data);
+#else
+finish_update_feed_image (SoupSession *soup_sess, SoupMessage *msg, gpointer user_data);
+#endif
+void get_shell(void *ep, ESEventTargetShell *t);
+void rss_finalize(void);
+gboolean check_update_feed_image(gchar *key);
+void get_feed_folders(void);
+void update_main_folder(gchar *new_name);
+void search_rebase(gpointer key, gpointer value, gchar *oname);
+void gtkut_window_popup(GtkWidget *window);
+void flaten_status(gpointer msg, gpointer user_data);
+gboolean check_if_enabled (gpointer key, gpointer value, gpointer user_data);
+void free_filter_uids (gpointer user_data, GObject *ex_msg);
+#if EVOLUTION_VERSION >= 22900
+void quit_cb(void *ep, EShellView *shell_view);
+#endif
+void rebase_feeds(gchar *old_name, gchar *new_name);
 
 #ifdef _WIN32
 char *strcasestr(const char *a, const char *b);



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