summaryrefslogtreecommitdiffabout
path: root/kmicromail/libetpan/mh
authorzautrix <zautrix>2004-09-01 10:23:29 (UTC)
committer zautrix <zautrix>2004-09-01 10:23:29 (UTC)
commit6cefbdc9c8f3f3001373f10715361e2740c45395 (patch) (unidiff)
treecb2c36f57620e698913c27ca4ebe59e4a7c9d46e /kmicromail/libetpan/mh
parentb9257cb225cd29bab5d96fcdaf557926603ee587 (diff)
downloadkdepimpi-6cefbdc9c8f3f3001373f10715361e2740c45395.zip
kdepimpi-6cefbdc9c8f3f3001373f10715361e2740c45395.tar.gz
kdepimpi-6cefbdc9c8f3f3001373f10715361e2740c45395.tar.bz2
Mail fixes and libetpan updated
Diffstat (limited to 'kmicromail/libetpan/mh') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libetpan/mh/mailmh.c28
-rw-r--r--kmicromail/libetpan/mh/mailmh.h7
2 files changed, 29 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
@@ -720,14 +720,15 @@ int mailmh_folder_get_message_size(struct mailmh_folder * folder,
720 720
721 * result = buf.st_size; 721 * result = buf.st_size;
722 722
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;
731 size_t namesize; 732 size_t namesize;
732 size_t left; 733 size_t left;
733 ssize_t res; 734 ssize_t res;
@@ -806,12 +807,15 @@ int mailmh_folder_add_message(struct mailmh_folder * folder,
806#endif 807#endif
807 key.data = &index; 808 key.data = &index;
808 key.len = sizeof(index); 809 key.len = sizeof(index);
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);
815 mailmh_msg_info_free(msg_info); 819 mailmh_msg_info_free(msg_info);
816 error = MAILMH_ERROR_MEMORY; 820 error = MAILMH_ERROR_MEMORY;
817 goto err; 821 goto err;
@@ -822,14 +826,20 @@ int mailmh_folder_add_message(struct mailmh_folder * folder,
822 free: 826 free:
823 free(tmpname); 827 free(tmpname);
824 err: 828 err:
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;
833 int r; 843 int r;
834 844
835#if 0 845#if 0
@@ -842,19 +852,25 @@ int mailmh_folder_add_message_file(struct mailmh_folder * folder,
842 return MAILMH_ERROR_FILE; 852 return MAILMH_ERROR_FILE;
843 853
844 message = mmap(NULL, buf.st_size, PROT_READ, MAP_PRIVATE, fd, 0); 854 message = mmap(NULL, buf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
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{
858 char * filename; 874 char * filename;
859 struct mailmh_msg_info * msg_info; 875 struct mailmh_msg_info * msg_info;
860 int res; 876 int res;
diff --git a/kmicromail/libetpan/mh/mailmh.h b/kmicromail/libetpan/mh/mailmh.h
index 40432cb..00199b8 100644
--- a/kmicromail/libetpan/mh/mailmh.h
+++ b/kmicromail/libetpan/mh/mailmh.h
@@ -116,15 +116,22 @@ int mailmh_folder_get_message_filename(struct mailmh_folder * folder,
116int mailmh_folder_get_message_fd(struct mailmh_folder * folder, 116int mailmh_folder_get_message_fd(struct mailmh_folder * folder,
117 uint32_t index, int flags, int * result); 117 uint32_t index, int flags, int * result);
118 118
119int mailmh_folder_get_message_size(struct mailmh_folder * folder, 119int mailmh_folder_get_message_size(struct mailmh_folder * folder,
120 uint32_t index, size_t * result); 120 uint32_t index, size_t * result);
121 121
122int mailmh_folder_add_message_uid(struct mailmh_folder * folder,
123 const char * message, size_t size,
124 uint32_t * pindex);
125
122int mailmh_folder_add_message(struct mailmh_folder * folder, 126int mailmh_folder_add_message(struct mailmh_folder * folder,
123 const char * message, size_t size); 127 const char * message, size_t size);
124 128
129int mailmh_folder_add_message_file_uid(struct mailmh_folder * folder,
130 int fd, uint32_t * pindex);
131
125int mailmh_folder_add_message_file(struct mailmh_folder * folder, 132int mailmh_folder_add_message_file(struct mailmh_folder * folder,
126 int fd); 133 int fd);
127 134
128int mailmh_folder_remove_message(struct mailmh_folder * folder, 135int mailmh_folder_remove_message(struct mailmh_folder * folder,
129 uint32_t index); 136 uint32_t index);
130 137