-rw-r--r-- | kmicromail/libetpan/mbox/mailmbox.c | 21 | ||||
-rw-r--r-- | kmicromail/libetpan/mbox/mailmbox.h | 4 | ||||
-rw-r--r-- | kmicromail/libetpan/mbox/mailmbox_types.c | 3 | ||||
-rw-r--r-- | kmicromail/libetpan/mbox/mailmbox_types.h | 1 |
4 files changed, 25 insertions, 4 deletions
diff --git a/kmicromail/libetpan/mbox/mailmbox.c b/kmicromail/libetpan/mbox/mailmbox.c index 280c313..b3fce02 100644 --- a/kmicromail/libetpan/mbox/mailmbox.c +++ b/kmicromail/libetpan/mbox/mailmbox.c @@ -197,6 +197,9 @@ int mailmbox_open(struct mailmbox_folder * folder) int fd; int read_only; + fd = -1; + read_only = TRUE; + if (!folder->mb_read_only) { read_only = FALSE; fd = open(folder->mb_filename, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); @@ -617,6 +620,8 @@ mailmbox_append_message_list_no_lock(struct mailmbox_folder * folder, folder->mb_max_uid + i + 1, folder->mb_no_uid); extra_size += 2; /* CR LF */ + + info->ai_uid = folder->mb_max_uid + i + 1; } left = folder->mb_mapping_size; @@ -744,8 +749,8 @@ mailmbox_append_message_list(struct mailmbox_folder * folder, } int -mailmbox_append_message(struct mailmbox_folder * folder, - const char * data, size_t len) +mailmbox_append_message_uid(struct mailmbox_folder * folder, + const char * data, size_t len, unsigned int * puid) { carray * tab; struct mailmbox_append_info * append_info; @@ -771,7 +776,10 @@ mailmbox_append_message(struct mailmbox_folder * folder, } r = mailmbox_append_message_list(folder, tab); - + + if (puid != NULL) + * puid = append_info->ai_uid; + mailmbox_append_info_free(append_info); carray_free(tab); @@ -785,6 +793,13 @@ mailmbox_append_message(struct mailmbox_folder * folder, return res; } +int +mailmbox_append_message(struct mailmbox_folder * folder, + const char * data, size_t len) +{ + return mailmbox_append_message_uid(folder, data, len, NULL); +} + /* ********************************************************************** */ int mailmbox_fetch_msg_no_lock(struct mailmbox_folder * folder, diff --git a/kmicromail/libetpan/mbox/mailmbox.h b/kmicromail/libetpan/mbox/mailmbox.h index 8be086c..0427f1f 100644 --- a/kmicromail/libetpan/mbox/mailmbox.h +++ b/kmicromail/libetpan/mbox/mailmbox.h @@ -51,6 +51,10 @@ int mailmbox_append_message(struct mailmbox_folder * folder, const char * data, size_t len); +int +mailmbox_append_message_uid(struct mailmbox_folder * folder, + const char * data, size_t len, unsigned int * puid); + int mailmbox_fetch_msg(struct mailmbox_folder * folder, uint32_t num, char ** result, size_t * result_len); diff --git a/kmicromail/libetpan/mbox/mailmbox_types.c b/kmicromail/libetpan/mbox/mailmbox_types.c index 1986182..4e3e521 100644 --- a/kmicromail/libetpan/mbox/mailmbox_types.c +++ b/kmicromail/libetpan/mbox/mailmbox_types.c @@ -178,7 +178,8 @@ mailmbox_append_info_new(const char * ai_message, size_t ai_size) info->ai_message = ai_message; info->ai_size = ai_size; - + info->ai_uid = 0; + return info; } diff --git a/kmicromail/libetpan/mbox/mailmbox_types.h b/kmicromail/libetpan/mbox/mailmbox_types.h index dd6758c..bd6ee30 100644 --- a/kmicromail/libetpan/mbox/mailmbox_types.h +++ b/kmicromail/libetpan/mbox/mailmbox_types.h @@ -128,6 +128,7 @@ void mailmbox_msg_info_free(struct mailmbox_msg_info * info); struct mailmbox_append_info { const char * ai_message; size_t ai_size; + unsigned int ai_uid; }; struct mailmbox_append_info * |