From c0748cf4f1e4a0178f5218ae73004d3d8c3d4d44 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Tue, 13 Jun 2000 00:27:30 +0000 Subject: implemented a temp hack for the imap fetch by uid code (works something like the POP code, should be fixed to work like we originally planned) svn path=/trunk/; revision=3540 --- camel/providers/imap/camel-imap-folder.c | 43 +++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 12 deletions(-) (limited to 'camel/providers') diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c index 4e6e184c48..f09cae6039 100644 --- a/camel/providers/imap/camel-imap-folder.c +++ b/camel/providers/imap/camel-imap-folder.c @@ -606,28 +606,47 @@ static CamelMimeMessage * imap_get_message_by_uid (CamelFolder *folder, const gchar *uid, CamelException *ex) { CamelImapStream *imap_stream; - CamelMimeMessage *message; + CamelStream *msgstream; + CamelStreamFilter *f_stream; /* will be used later w/ crlf filter */ + CamelMimeFilter *filter; /* crlf/dot filter */ + CamelMimeMessage *msg; CamelMimePart *part; CamelDataWrapper *cdw; gchar *cmdbuf; + int id; /* TODO: fetch the correct part, get rid of the hard-coded stuff */ - cmdbuf = g_strdup_printf("UID FETCH %s BODY[TEXT]", uid); - imap_stream = camel_imap_stream_new(folder, cmdbuf); - g_free(cmdbuf); + cmdbuf = g_strdup_printf ("UID FETCH %s BODY[TEXT]", uid); + imap_stream = camel_imap_stream_new (folder, cmdbuf); + g_free (cmdbuf); - message = camel_mime_message_new(); + + /* Temp hack - basically we read in the entire message instead of getting a part as it's needed */ + msgstream = camel_stream_mem_new (); + camel_stream_write_to_stream (msgstream, CAMEL_STREAM (imap_stream)); + gtk_object_unref (GTK_OBJECT (imap_stream)); + + f_stream = camel_stream_filter_new_with_stream (msgstream); + filter = camel_mime_filter_crlf_new (CAMEL_MIME_FILTER_CRLF_DECODE, CAMEL_MIME_FILTER_CRLF_MODE_CRLF_DOTS); + id = camel_stream_filter_add (f_stream, CAMEL_MIME_FILTER (filter)); - cdw = camel_data_wrapper_new(); - camel_data_wrapper_construct_from_stream(cdw, imap_stream); - gtk_object_unref(GTK_OBJECT (imap_stream)); + msg = camel_mime_message_new (); - camel_data_wrapper_set_mime_type (cdw, "text/plain"); + /*cdw = camel_data_wrapper_new ();*/ + /*camel_data_wrapper_construct_from_stream (cdw, CAMEL_STREAM (f_stream));*/ + camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (msg), CAMEL_STREAM (f_stream)); + + camel_stream_filter_remove (f_stream, id); + camel_stream_close (CAMEL_STREAM (f_stream)); + gtk_object_unref (GTK_OBJECT (msgstream)); + gtk_object_unref (GTK_OBJECT (f_stream)); + + /*camel_data_wrapper_set_mime_type (cdw, "text/plain");*/ - camel_medium_set_content_object (CAMEL_MEDIUM (message), CAMEL_DATA_WRAPPER (cdw)); - gtk_object_unref (GTK_OBJECT (cdw)); + /*camel_medium_set_content_object (CAMEL_MEDIUM (msg), CAMEL_DATA_WRAPPER (cdw));*/ + /*gtk_object_unref (GTK_OBJECT (cdw));*/ - return message; + return msg; } #if 0 -- cgit v1.2.3