diff options
author | Jeffrey Stedfast <fejj@src.gnome.org> | 2000-06-13 08:27:30 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2000-06-13 08:27:30 +0800 |
commit | c0748cf4f1e4a0178f5218ae73004d3d8c3d4d44 (patch) | |
tree | 23c34697126702429513c5924da8b59127fea3c9 /camel/providers/imap | |
parent | 6c12613258f40118afae97e3868e0c007912bf28 (diff) | |
download | gsoc2013-evolution-c0748cf4f1e4a0178f5218ae73004d3d8c3d4d44.tar.gz gsoc2013-evolution-c0748cf4f1e4a0178f5218ae73004d3d8c3d4d44.tar.zst gsoc2013-evolution-c0748cf4f1e4a0178f5218ae73004d3d8c3d4d44.zip |
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
Diffstat (limited to 'camel/providers/imap')
-rw-r--r-- | camel/providers/imap/camel-imap-folder.c | 43 |
1 files changed, 31 insertions, 12 deletions
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 |