[evolution-rss] proper support importing file:// feeds



commit 4fb905f293bf0091f7d6f21423f530e6750119ab
Author: Lucian Langa <lucilanga gnome org>
Date:   Sun Apr 25 21:33:12 2010 +0300

    proper support importing file:// feeds

 src/fetch.c    |    2 +-
 src/file-gio.c |   29 +++++++++++++++++++++++------
 2 files changed, 24 insertions(+), 7 deletions(-)
---
diff --git a/src/fetch.c b/src/fetch.c
index 25c7572..d7e451e 100644
--- a/src/fetch.c
+++ b/src/fetch.c
@@ -91,7 +91,7 @@ fetch_unblocking(gchar *url, NetStatusCallback cb, gpointer data,
 		return file_get_unblocking(url,
 				NULL, // add status here //
 				NULL,
-				gio_finish_feed,
+				cb2,
 				cbdata2,
 				0,
 				err);
diff --git a/src/file-gio.c b/src/file-gio.c
index 7b8d887..6c78816 100644
--- a/src/file-gio.c
+++ b/src/file-gio.c
@@ -25,6 +25,16 @@
 #include "network.h"
 #include "file-gio.h"
 
+typedef void (*UnblockCallback)(
+			SoupSession *s,
+			SoupMessage *m,
+			gpointer user_data);
+
+typedef struct FILE_GIO {
+	UnblockCallback callback;
+	gpointer callback_data;
+} fg;
+
 gboolean
 file_get_unblocking(const char *uri, NetStatusCallback cb,
 		gpointer data, gpointer cb2,
@@ -33,13 +43,17 @@ file_get_unblocking(const char *uri, NetStatusCallback cb,
 		GError **err)
 {
 	GFile *file;
+	fg *FG = g_new0(fg, 1);
+	/*repack user_data for gio_finish_feed*/
+	FG->callback = cb2;
+	FG->callback_data = cbdata2;
 
 	file = g_file_new_for_uri (uri);
 	g_file_load_contents_async (
 		file,
 		NULL,
-		cb2,
-		cbdata2);
+		gio_finish_feed,
+		FG);
 	return 1;
 }
 
@@ -49,8 +63,9 @@ gio_finish_feed (GObject *object, GAsyncResult *res, gpointer user_data)
 	gsize file_size;
 	char *file_contents;
 	gboolean result;
+	fg *FG = (fg *)user_data;
 
-	rfMessage *rfmsg = g_new0(rfMessage, 1);
+	SoupMessage *rfmsg = g_new0(SoupMessage, 1);
 
 	result = g_file_load_contents_finish (
 			G_FILE (object),
@@ -59,9 +74,11 @@ gio_finish_feed (GObject *object, GAsyncResult *res, gpointer user_data)
 			NULL, NULL);
 	if (result) {
 		rfmsg->status_code = SOUP_STATUS_OK;
-		rfmsg->body = file_contents;
-		rfmsg->length = file_size;
-		generic_finish_feed(rfmsg, user_data);
+		rfmsg->response_body = (SoupMessageBody *)g_string_new(NULL);
+		rfmsg->response_body->data = file_contents;
+		rfmsg->response_body->length = file_size;
+		FG->callback(NULL, rfmsg, FG->callback_data);
+
 		g_free (file_contents);
 	}
 	g_free(rfmsg);



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