[evolution-rss] add more compiler warnings flags and port code to C90
- From: Lucian Langa <lucilanga src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [evolution-rss] add more compiler warnings flags and port code to C90
- Date: Wed, 14 Oct 2009 19:03:55 +0000 (UTC)
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> ");
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]