From 4a3be146661da5d5267af57482ba0a22656166f5 Mon Sep 17 00:00:00 2001 From: bertrand Date: Wed, 8 Sep 1999 12:20:30 +0000 Subject: impemented. 1999-09-08 bertrand * camel/providers/MH/camel-mh-folder.c (_get_message_by_uid): impemented. * camel/camel-folder.c: (camel_folder_get_message_uid_by_number): const'ified uid. (camel_folder_get_message_by_uid): idem removed stupid camel_folder_get_message_uid_by_number method. svn path=/trunk/; revision=1215 --- camel/providers/MH/camel-mh-folder.c | 65 ++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) (limited to 'camel/providers/MH/camel-mh-folder.c') diff --git a/camel/providers/MH/camel-mh-folder.c b/camel/providers/MH/camel-mh-folder.c index 1afc441cad..231c79039a 100644 --- a/camel/providers/MH/camel-mh-folder.c +++ b/camel/providers/MH/camel-mh-folder.c @@ -39,6 +39,7 @@ #include "camel-folder-summary.h" #include "gmime-utils.h" #include "mh-utils.h" +#include "mh-uid.h" static CamelFolderClass *parent_class=NULL; @@ -738,6 +739,70 @@ _copy_message_to (CamelFolder *folder, CamelMimeMessage *message, CamelFolder *d +/** UID **/ + +static const gchar * +_get_message_uid (CamelFolder *folder, CamelMimeMessage *message) +{ + +} + + +static CamelMimeMessage * +_get_message_by_uid (CamelFolder *folder, const gchar *uid) +{ + CamelMhFolder *mh_folder = CAMEL_MH_FOLDER (folder); + GArray *uid_array; + gboolean found = FALSE; + MhUidCouple *uid_couple; + gint file_number; + gchar *filename; + CamelMimeMessage *message = NULL; + CamelStream *input_stream; + int i; + + /* + * because they are constructed with md5 + * signatures, all MH uids are 16 bytes long + */ + if (strlen (uid) != 16) return NULL; + + uid_array = mh_folder->uid_array; + uid_couple = (MhUidCouple *)uid_array->data; + + found = !strncmp (uid, uid_couple->uid, 16 * sizeof (guchar)); + for (i=0; (ilen) && (!found); i++) { + uid_couple++; + found = !strncmp (uid, uid_couple->uid, 16 * sizeof (guchar)); + } + if (found) { + /* physically retrieve the message */ + file_number = uid_couple->file_number; + filename = g_strdup_printf ("%d", file_number); + input_stream = camel_stream_buffered_fs_new_with_name (filename, CAMEL_STREAM_BUFFERED_FS_READ); + + if (input_stream != NULL) { +#warning use session field here + message = camel_mime_message_new_with_session ( (CamelSession *)NULL); + camel_data_wrapper_construct_from_stream ( CAMEL_DATA_WRAPPER (message), input_stream); + gtk_object_unref (GTK_OBJECT (input_stream)); + + /* set message UID in CamelMimeMessage */ + message->message_uid = g_strdup (uid); + + } + g_free (filename); + } + + return message; + +} + +static GList * +_get_uid_list (CamelFolder *folder) +{ + return NULL; +} -- cgit v1.2.3