Diffstat (limited to 'kmicromail/libetpan/generic/mboxdriver.c') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kmicromail/libetpan/generic/mboxdriver.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/kmicromail/libetpan/generic/mboxdriver.c b/kmicromail/libetpan/generic/mboxdriver.c index fa3e2ea..c19a668 100644 --- a/kmicromail/libetpan/generic/mboxdriver.c +++ b/kmicromail/libetpan/generic/mboxdriver.c | |||
@@ -56,48 +56,51 @@ | |||
56 | 56 | ||
57 | static int mboxdriver_initialize(mailsession * session); | 57 | static int mboxdriver_initialize(mailsession * session); |
58 | 58 | ||
59 | static void mboxdriver_uninitialize(mailsession * session); | 59 | static void mboxdriver_uninitialize(mailsession * session); |
60 | 60 | ||
61 | static int mboxdriver_parameters(mailsession * session, | 61 | static int mboxdriver_parameters(mailsession * session, |
62 | int id, void * value); | 62 | int id, void * value); |
63 | 63 | ||
64 | static int mboxdriver_connect_path(mailsession * session, char * path); | 64 | static int mboxdriver_connect_path(mailsession * session, char * path); |
65 | 65 | ||
66 | static int mboxdriver_logout(mailsession * session); | 66 | static int mboxdriver_logout(mailsession * session); |
67 | 67 | ||
68 | static int mboxdriver_expunge_folder(mailsession * session); | 68 | static int mboxdriver_expunge_folder(mailsession * session); |
69 | 69 | ||
70 | static int mboxdriver_status_folder(mailsession * session, char * mb, | 70 | static int mboxdriver_status_folder(mailsession * session, char * mb, |
71 | uint32_t * result_messages, uint32_t * result_recent, | 71 | uint32_t * result_messages, uint32_t * result_recent, |
72 | uint32_t * result_unseen); | 72 | uint32_t * result_unseen); |
73 | 73 | ||
74 | static int mboxdriver_messages_number(mailsession * session, char * mb, | 74 | static int mboxdriver_messages_number(mailsession * session, char * mb, |
75 | uint32_t * result); | 75 | uint32_t * result); |
76 | 76 | ||
77 | static int mboxdriver_append_message(mailsession * session, | 77 | static int mboxdriver_append_message(mailsession * session, |
78 | char * message, size_t size); | 78 | char * message, size_t size); |
79 | 79 | ||
80 | static int mboxdriver_append_message_flags(mailsession * session, | ||
81 | char * message, size_t size, struct mail_flags * flags); | ||
82 | |||
80 | static int mboxdriver_get_messages_list(mailsession * session, | 83 | static int mboxdriver_get_messages_list(mailsession * session, |
81 | struct mailmessage_list ** result); | 84 | struct mailmessage_list ** result); |
82 | 85 | ||
83 | static int | 86 | static int |
84 | mboxdriver_get_envelopes_list(mailsession * session, | 87 | mboxdriver_get_envelopes_list(mailsession * session, |
85 | struct mailmessage_list * env_list); | 88 | struct mailmessage_list * env_list); |
86 | 89 | ||
87 | static int mboxdriver_remove_message(mailsession * session, uint32_t num); | 90 | static int mboxdriver_remove_message(mailsession * session, uint32_t num); |
88 | 91 | ||
89 | static int mboxdriver_get_message(mailsession * session, | 92 | static int mboxdriver_get_message(mailsession * session, |
90 | uint32_t num, mailmessage ** result); | 93 | uint32_t num, mailmessage ** result); |
91 | 94 | ||
92 | static int mboxdriver_get_message_by_uid(mailsession * session, | 95 | static int mboxdriver_get_message_by_uid(mailsession * session, |
93 | const char * uid, | 96 | const char * uid, |
94 | mailmessage ** result); | 97 | mailmessage ** result); |
95 | 98 | ||
96 | static mailsession_driver local_mbox_session_driver = { | 99 | static mailsession_driver local_mbox_session_driver = { |
97 | .sess_name = "mbox", | 100 | .sess_name = "mbox", |
98 | 101 | ||
99 | .sess_initialize = mboxdriver_initialize, | 102 | .sess_initialize = mboxdriver_initialize, |
100 | .sess_uninitialize = mboxdriver_uninitialize, | 103 | .sess_uninitialize = mboxdriver_uninitialize, |
101 | 104 | ||
102 | .sess_parameters = mboxdriver_parameters, | 105 | .sess_parameters = mboxdriver_parameters, |
103 | 106 | ||
@@ -105,48 +108,49 @@ static mailsession_driver local_mbox_session_driver = { | |||
105 | .sess_connect_stream = NULL, | 108 | .sess_connect_stream = NULL, |
106 | .sess_starttls = NULL, | 109 | .sess_starttls = NULL, |
107 | .sess_login = NULL, | 110 | .sess_login = NULL, |
108 | .sess_logout = mboxdriver_logout, | 111 | .sess_logout = mboxdriver_logout, |
109 | .sess_noop = NULL, | 112 | .sess_noop = NULL, |
110 | 113 | ||
111 | .sess_build_folder_name = NULL, | 114 | .sess_build_folder_name = NULL, |
112 | .sess_create_folder = NULL, | 115 | .sess_create_folder = NULL, |
113 | .sess_delete_folder = NULL, | 116 | .sess_delete_folder = NULL, |
114 | .sess_rename_folder = NULL, | 117 | .sess_rename_folder = NULL, |
115 | .sess_check_folder = NULL, | 118 | .sess_check_folder = NULL, |
116 | .sess_examine_folder = NULL, | 119 | .sess_examine_folder = NULL, |
117 | .sess_select_folder = NULL, | 120 | .sess_select_folder = NULL, |
118 | .sess_expunge_folder = mboxdriver_expunge_folder, | 121 | .sess_expunge_folder = mboxdriver_expunge_folder, |
119 | .sess_status_folder = mboxdriver_status_folder, | 122 | .sess_status_folder = mboxdriver_status_folder, |
120 | .sess_messages_number = mboxdriver_messages_number, | 123 | .sess_messages_number = mboxdriver_messages_number, |
121 | .sess_recent_number = mboxdriver_messages_number, | 124 | .sess_recent_number = mboxdriver_messages_number, |
122 | .sess_unseen_number = mboxdriver_messages_number, | 125 | .sess_unseen_number = mboxdriver_messages_number, |
123 | .sess_list_folders = NULL, | 126 | .sess_list_folders = NULL, |
124 | .sess_lsub_folders = NULL, | 127 | .sess_lsub_folders = NULL, |
125 | .sess_subscribe_folder = NULL, | 128 | .sess_subscribe_folder = NULL, |
126 | .sess_unsubscribe_folder = NULL, | 129 | .sess_unsubscribe_folder = NULL, |
127 | 130 | ||
128 | .sess_append_message = mboxdriver_append_message, | 131 | .sess_append_message = mboxdriver_append_message, |
132 | .sess_append_message_flags = mboxdriver_append_message_flags, | ||
129 | .sess_copy_message = NULL, | 133 | .sess_copy_message = NULL, |
130 | .sess_move_message = NULL, | 134 | .sess_move_message = NULL, |
131 | 135 | ||
132 | .sess_get_messages_list = mboxdriver_get_messages_list, | 136 | .sess_get_messages_list = mboxdriver_get_messages_list, |
133 | .sess_get_envelopes_list = mboxdriver_get_envelopes_list, | 137 | .sess_get_envelopes_list = mboxdriver_get_envelopes_list, |
134 | .sess_remove_message = mboxdriver_remove_message, | 138 | .sess_remove_message = mboxdriver_remove_message, |
135 | #if 0 | 139 | #if 0 |
136 | .sess_search_messages = maildriver_generic_search_messages, | 140 | .sess_search_messages = maildriver_generic_search_messages, |
137 | #endif | 141 | #endif |
138 | 142 | ||
139 | .sess_get_message = mboxdriver_get_message, | 143 | .sess_get_message = mboxdriver_get_message, |
140 | .sess_get_message_by_uid = mboxdriver_get_message_by_uid, | 144 | .sess_get_message_by_uid = mboxdriver_get_message_by_uid, |
141 | }; | 145 | }; |
142 | 146 | ||
143 | mailsession_driver * mbox_session_driver = &local_mbox_session_driver; | 147 | mailsession_driver * mbox_session_driver = &local_mbox_session_driver; |
144 | 148 | ||
145 | static inline struct mbox_session_state_data * get_data(mailsession * session) | 149 | static inline struct mbox_session_state_data * get_data(mailsession * session) |
146 | { | 150 | { |
147 | return session->sess_data; | 151 | return session->sess_data; |
148 | } | 152 | } |
149 | 153 | ||
150 | static inline struct mailmbox_folder * get_mbox_session(mailsession * session) | 154 | static inline struct mailmbox_folder * get_mbox_session(mailsession * session) |
151 | { | 155 | { |
152 | return get_data(session)->mbox_folder; | 156 | return get_data(session)->mbox_folder; |
@@ -323,48 +327,54 @@ static int mboxdriver_messages_number(mailsession * session, char * mb, | |||
323 | } | 327 | } |
324 | 328 | ||
325 | /* messages operations */ | 329 | /* messages operations */ |
326 | 330 | ||
327 | static int mboxdriver_append_message(mailsession * session, | 331 | static int mboxdriver_append_message(mailsession * session, |
328 | char * message, size_t size) | 332 | char * message, size_t size) |
329 | { | 333 | { |
330 | int r; | 334 | int r; |
331 | struct mailmbox_folder * folder; | 335 | struct mailmbox_folder * folder; |
332 | 336 | ||
333 | folder = get_mbox_session(session); | 337 | folder = get_mbox_session(session); |
334 | if (folder == NULL) | 338 | if (folder == NULL) |
335 | return MAIL_ERROR_APPEND; | 339 | return MAIL_ERROR_APPEND; |
336 | 340 | ||
337 | r = mailmbox_append_message(folder, message, size); | 341 | r = mailmbox_append_message(folder, message, size); |
338 | 342 | ||
339 | switch (r) { | 343 | switch (r) { |
340 | case MAILMBOX_ERROR_FILE: | 344 | case MAILMBOX_ERROR_FILE: |
341 | return MAIL_ERROR_DISKSPACE; | 345 | return MAIL_ERROR_DISKSPACE; |
342 | default: | 346 | default: |
343 | return mboxdriver_mbox_error_to_mail_error(r); | 347 | return mboxdriver_mbox_error_to_mail_error(r); |
344 | } | 348 | } |
345 | } | 349 | } |
346 | 350 | ||
351 | static int mboxdriver_append_message_flags(mailsession * session, | ||
352 | char * message, size_t size, struct mail_flags * flags) | ||
353 | { | ||
354 | return mboxdriver_append_message(session, message, size); | ||
355 | } | ||
356 | |||
347 | static int mboxdriver_get_messages_list(mailsession * session, | 357 | static int mboxdriver_get_messages_list(mailsession * session, |
348 | struct mailmessage_list ** result) | 358 | struct mailmessage_list ** result) |
349 | { | 359 | { |
350 | struct mailmbox_folder * folder; | 360 | struct mailmbox_folder * folder; |
351 | int res; | 361 | int res; |
352 | 362 | ||
353 | folder = get_mbox_session(session); | 363 | folder = get_mbox_session(session); |
354 | if (folder == NULL) { | 364 | if (folder == NULL) { |
355 | res = MAIL_ERROR_BAD_STATE; | 365 | res = MAIL_ERROR_BAD_STATE; |
356 | goto err; | 366 | goto err; |
357 | } | 367 | } |
358 | 368 | ||
359 | return mbox_get_messages_list(folder, session, mbox_message_driver, result); | 369 | return mbox_get_messages_list(folder, session, mbox_message_driver, result); |
360 | 370 | ||
361 | err: | 371 | err: |
362 | return res; | 372 | return res; |
363 | } | 373 | } |
364 | 374 | ||
365 | static int | 375 | static int |
366 | mboxdriver_get_envelopes_list(mailsession * session, | 376 | mboxdriver_get_envelopes_list(mailsession * session, |
367 | struct mailmessage_list * env_list) | 377 | struct mailmessage_list * env_list) |
368 | { | 378 | { |
369 | struct mailmbox_folder * folder; | 379 | struct mailmbox_folder * folder; |
370 | unsigned int i; | 380 | unsigned int i; |