author | zautrix <zautrix> | 2004-09-01 10:23:29 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-09-01 10:23:29 (UTC) |
commit | 6cefbdc9c8f3f3001373f10715361e2740c45395 (patch) (unidiff) | |
tree | cb2c36f57620e698913c27ca4ebe59e4a7c9d46e /kmicromail/libetpan/generic/pop3driver_cached.c | |
parent | b9257cb225cd29bab5d96fcdaf557926603ee587 (diff) | |
download | kdepimpi-6cefbdc9c8f3f3001373f10715361e2740c45395.zip kdepimpi-6cefbdc9c8f3f3001373f10715361e2740c45395.tar.gz kdepimpi-6cefbdc9c8f3f3001373f10715361e2740c45395.tar.bz2 |
Mail fixes and libetpan updated
Diffstat (limited to 'kmicromail/libetpan/generic/pop3driver_cached.c') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kmicromail/libetpan/generic/pop3driver_cached.c | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/kmicromail/libetpan/generic/pop3driver_cached.c b/kmicromail/libetpan/generic/pop3driver_cached.c index 6f97303..24f624b 100644 --- a/kmicromail/libetpan/generic/pop3driver_cached.c +++ b/kmicromail/libetpan/generic/pop3driver_cached.c | |||
@@ -101,24 +101,27 @@ static int pop3driver_cached_remove_message(mailsession * session, | |||
101 | 101 | ||
102 | static int | 102 | static int |
103 | pop3driver_cached_get_messages_list(mailsession * session, | 103 | pop3driver_cached_get_messages_list(mailsession * session, |
104 | struct mailmessage_list ** result); | 104 | struct mailmessage_list ** result); |
105 | 105 | ||
106 | static int | 106 | static int |
107 | pop3driver_cached_get_envelopes_list(mailsession * session, | 107 | pop3driver_cached_get_envelopes_list(mailsession * session, |
108 | struct mailmessage_list * env_list); | 108 | struct mailmessage_list * env_list); |
109 | 109 | ||
110 | static int pop3driver_cached_get_message(mailsession * session, | 110 | static int pop3driver_cached_get_message(mailsession * session, |
111 | uint32_t num, mailmessage ** result); | 111 | uint32_t num, mailmessage ** result); |
112 | 112 | ||
113 | static int pop3driver_cached_get_message_by_uid(mailsession * session, | ||
114 | const char * uid, mailmessage ** result); | ||
115 | |||
113 | static mailsession_driver local_pop3_cached_session_driver = { | 116 | static mailsession_driver local_pop3_cached_session_driver = { |
114 | .sess_name = "pop3-cached", | 117 | .sess_name = "pop3-cached", |
115 | 118 | ||
116 | .sess_initialize = pop3driver_cached_initialize, | 119 | .sess_initialize = pop3driver_cached_initialize, |
117 | .sess_uninitialize = pop3driver_cached_uninitialize, | 120 | .sess_uninitialize = pop3driver_cached_uninitialize, |
118 | 121 | ||
119 | .sess_parameters = pop3driver_cached_parameters, | 122 | .sess_parameters = pop3driver_cached_parameters, |
120 | 123 | ||
121 | .sess_connect_stream = pop3driver_cached_connect_stream, | 124 | .sess_connect_stream = pop3driver_cached_connect_stream, |
122 | .sess_connect_path = NULL, | 125 | .sess_connect_path = NULL, |
123 | .sess_starttls = pop3driver_cached_starttls, | 126 | .sess_starttls = pop3driver_cached_starttls, |
124 | .sess_login = pop3driver_cached_login, | 127 | .sess_login = pop3driver_cached_login, |
@@ -134,36 +137,37 @@ static mailsession_driver local_pop3_cached_session_driver = { | |||
134 | .sess_select_folder = NULL, | 137 | .sess_select_folder = NULL, |
135 | .sess_expunge_folder = pop3driver_cached_expunge_folder, | 138 | .sess_expunge_folder = pop3driver_cached_expunge_folder, |
136 | .sess_status_folder = pop3driver_cached_status_folder, | 139 | .sess_status_folder = pop3driver_cached_status_folder, |
137 | .sess_messages_number = pop3driver_cached_messages_number, | 140 | .sess_messages_number = pop3driver_cached_messages_number, |
138 | .sess_recent_number = pop3driver_cached_recent_number, | 141 | .sess_recent_number = pop3driver_cached_recent_number, |
139 | .sess_unseen_number = pop3driver_cached_unseen_number, | 142 | .sess_unseen_number = pop3driver_cached_unseen_number, |
140 | .sess_list_folders = NULL, | 143 | .sess_list_folders = NULL, |
141 | .sess_lsub_folders = NULL, | 144 | .sess_lsub_folders = NULL, |
142 | .sess_subscribe_folder = NULL, | 145 | .sess_subscribe_folder = NULL, |
143 | .sess_unsubscribe_folder = NULL, | 146 | .sess_unsubscribe_folder = NULL, |
144 | 147 | ||
145 | .sess_append_message = NULL, | 148 | .sess_append_message = NULL, |
149 | .sess_append_message_flags = NULL, | ||
146 | .sess_copy_message = NULL, | 150 | .sess_copy_message = NULL, |
147 | .sess_move_message = NULL, | 151 | .sess_move_message = NULL, |
148 | 152 | ||
149 | .sess_get_messages_list = pop3driver_cached_get_messages_list, | 153 | .sess_get_messages_list = pop3driver_cached_get_messages_list, |
150 | .sess_get_envelopes_list = pop3driver_cached_get_envelopes_list, | 154 | .sess_get_envelopes_list = pop3driver_cached_get_envelopes_list, |
151 | .sess_remove_message = pop3driver_cached_remove_message, | 155 | .sess_remove_message = pop3driver_cached_remove_message, |
152 | #if 0 | 156 | #if 0 |
153 | .sess_search_messages = maildriver_generic_search_messages, | 157 | .sess_search_messages = maildriver_generic_search_messages, |
154 | #endif | 158 | #endif |
155 | 159 | ||
156 | .sess_get_message = pop3driver_cached_get_message, | 160 | .sess_get_message = pop3driver_cached_get_message, |
157 | .sess_get_message_by_uid = NULL, | 161 | .sess_get_message_by_uid = pop3driver_cached_get_message_by_uid, |
158 | }; | 162 | }; |
159 | 163 | ||
160 | mailsession_driver * pop3_cached_session_driver = | 164 | mailsession_driver * pop3_cached_session_driver = |
161 | &local_pop3_cached_session_driver; | 165 | &local_pop3_cached_session_driver; |
162 | 166 | ||
163 | #define ENV_NAME "env.db" | 167 | #define ENV_NAME "env.db" |
164 | #define FLAGS_NAME "flags.db" | 168 | #define FLAGS_NAME "flags.db" |
165 | 169 | ||
166 | 170 | ||
167 | static inline struct pop3_cached_session_state_data * | 171 | static inline struct pop3_cached_session_state_data * |
168 | get_cached_data(mailsession * session) | 172 | get_cached_data(mailsession * session) |
169 | { | 173 | { |
@@ -846,12 +850,50 @@ static int pop3driver_cached_get_message(mailsession * session, | |||
846 | return MAIL_ERROR_MEMORY; | 850 | return MAIL_ERROR_MEMORY; |
847 | 851 | ||
848 | r = mailmessage_init(msg_info, session, pop3_cached_message_driver, num, 0); | 852 | r = mailmessage_init(msg_info, session, pop3_cached_message_driver, num, 0); |
849 | if (r != MAIL_NO_ERROR) { | 853 | if (r != MAIL_NO_ERROR) { |
850 | mailmessage_free(msg_info); | 854 | mailmessage_free(msg_info); |
851 | return r; | 855 | return r; |
852 | } | 856 | } |
853 | 857 | ||
854 | * result = msg_info; | 858 | * result = msg_info; |
855 | 859 | ||
856 | return MAIL_NO_ERROR; | 860 | return MAIL_NO_ERROR; |
857 | } | 861 | } |
862 | |||
863 | static int pop3driver_cached_get_message_by_uid(mailsession * session, | ||
864 | const char * uid, mailmessage ** result) | ||
865 | { | ||
866 | mailpop3 * pop3; | ||
867 | struct mailpop3_msg_info * msg_info; | ||
868 | int found; | ||
869 | unsigned int i; | ||
870 | |||
871 | if (uid == NULL) | ||
872 | return MAIL_ERROR_INVAL; | ||
873 | |||
874 | pop3 = get_pop3_session(session); | ||
875 | |||
876 | found = 0; | ||
877 | |||
878 | /* iterate all messages and look for uid */ | ||
879 | for(i = 0 ; i < carray_count(pop3->pop3_msg_tab) ; i++) { | ||
880 | msg_info = carray_get(pop3->pop3_msg_tab, i); | ||
881 | |||
882 | if (msg_info == NULL) | ||
883 | continue; | ||
884 | |||
885 | if (msg_info->msg_deleted) | ||
886 | continue; | ||
887 | |||
888 | /* uid found, stop looking */ | ||
889 | if (strcmp(msg_info->msg_uidl, uid) == 0) { | ||
890 | found = 1; | ||
891 | break; | ||
892 | } | ||
893 | } | ||
894 | |||
895 | if (!found) | ||
896 | return MAIL_ERROR_MSG_NOT_FOUND; | ||
897 | |||
898 | return pop3driver_cached_get_message(session, msg_info->msg_index, result); | ||
899 | } | ||