summaryrefslogtreecommitdiffabout
path: root/kmicromail/libetpan/mh/mailmh.c
Unidiff
Diffstat (limited to 'kmicromail/libetpan/mh/mailmh.c') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libetpan/mh/mailmh.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/kmicromail/libetpan/mh/mailmh.c b/kmicromail/libetpan/mh/mailmh.c
index d6ff950..119f217 100644
--- a/kmicromail/libetpan/mh/mailmh.c
+++ b/kmicromail/libetpan/mh/mailmh.c
@@ -723,8 +723,9 @@ int mailmh_folder_get_message_size(struct mailmh_folder * folder,
723 return MAILMH_NO_ERROR; 723 return MAILMH_NO_ERROR;
724} 724}
725 725
726int mailmh_folder_add_message(struct mailmh_folder * folder, 726int mailmh_folder_add_message_uid(struct mailmh_folder * folder,
727 const char * message, size_t size) 727 const char * message, size_t size,
728 uint32_t * pindex)
728{ 729{
729 char * tmpname; 730 char * tmpname;
730 int fd; 731 int fd;
@@ -809,6 +810,9 @@ int mailmh_folder_add_message(struct mailmh_folder * folder,
809 data.data = msg_info; 810 data.data = msg_info;
810 data.len = 0; 811 data.len = 0;
811 812
813 if (pindex != NULL)
814 * pindex = index;
815
812 r = chash_set(folder->fl_msgs_hash, &key, &data, NULL); 816 r = chash_set(folder->fl_msgs_hash, &key, &data, NULL);
813 if (r < 0) { 817 if (r < 0) {
814 carray_delete_fast(folder->fl_msgs_tab, msg_info->msg_array_index); 818 carray_delete_fast(folder->fl_msgs_tab, msg_info->msg_array_index);
@@ -825,8 +829,14 @@ int mailmh_folder_add_message(struct mailmh_folder * folder,
825 return error; 829 return error;
826} 830}
827 831
828int mailmh_folder_add_message_file(struct mailmh_folder * folder, 832int mailmh_folder_add_message(struct mailmh_folder * folder,
829 int fd) 833 const char * message, size_t size)
834{
835 return mailmh_folder_add_message_uid(folder, message, size, NULL);
836}
837
838int mailmh_folder_add_message_file_uid(struct mailmh_folder * folder,
839 int fd, uint32_t * pindex)
830{ 840{
831 char * message; 841 char * message;
832 struct stat buf; 842 struct stat buf;
@@ -845,13 +855,19 @@ int mailmh_folder_add_message_file(struct mailmh_folder * folder,
845 if (message == MAP_FAILED) 855 if (message == MAP_FAILED)
846 return MAILMH_ERROR_FILE; 856 return MAILMH_ERROR_FILE;
847 857
848 r = mailmh_folder_add_message(folder, message, buf.st_size); 858 r = mailmh_folder_add_message_uid(folder, message, buf.st_size, pindex);
849 859
850 munmap(message, buf.st_size); 860 munmap(message, buf.st_size);
851 861
852 return r; 862 return r;
853} 863}
854 864
865int mailmh_folder_add_message_file(struct mailmh_folder * folder,
866 int fd)
867{
868 return mailmh_folder_add_message_file_uid(folder, fd, NULL);
869}
870
855int mailmh_folder_remove_message(struct mailmh_folder * folder, 871int mailmh_folder_remove_message(struct mailmh_folder * folder,
856 uint32_t index) 872 uint32_t index)
857{ 873{