summaryrefslogtreecommitdiffabout
path: root/kmicromail/libetpan/generic/imapdriver_tools.c
Unidiff
Diffstat (limited to 'kmicromail/libetpan/generic/imapdriver_tools.c') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libetpan/generic/imapdriver_tools.c38
1 files changed, 31 insertions, 7 deletions
diff --git a/kmicromail/libetpan/generic/imapdriver_tools.c b/kmicromail/libetpan/generic/imapdriver_tools.c
index 3d737f3..de4008f 100644
--- a/kmicromail/libetpan/generic/imapdriver_tools.c
+++ b/kmicromail/libetpan/generic/imapdriver_tools.c
@@ -3098,34 +3098,33 @@ static int imap_flags_to_flags(struct mailimap_msg_att_dynamic * att_dyn,
3098 } 3098 }
3099 3099
3100 * result = flags; 3100 * result = flags;
3101 3101
3102 return MAIL_NO_ERROR; 3102 return MAIL_NO_ERROR;
3103 3103
3104 free: 3104 free:
3105 mail_flags_free(flags); 3105 mail_flags_free(flags);
3106 err: 3106 err:
3107 return MAIL_ERROR_MEMORY; 3107 return MAIL_ERROR_MEMORY;
3108} 3108}
3109 3109
3110static int flags_to_imap_flags(struct mail_flags * flags, 3110int imap_flags_to_imap_flags(struct mail_flags * flags,
3111 struct mailimap_store_att_flags ** result) 3111 struct mailimap_flag_list ** result)
3112{ 3112{
3113 struct mailimap_flag * flag; 3113 struct mailimap_flag * flag;
3114 struct mailimap_flag_list * flag_list; 3114 struct mailimap_flag_list * flag_list;
3115 struct mailimap_store_att_flags * att_flags;
3116 int res; 3115 int res;
3117 clistiter * cur; 3116 clistiter * cur;
3118 int r; 3117 int r;
3119 3118
3120 flag_list = mailimap_flag_list_new_empty(); 3119 flag_list = mailimap_flag_list_new_empty();
3121 if (flag_list == NULL) { 3120 if (flag_list == NULL) {
3122 res = MAIL_ERROR_MEMORY; 3121 res = MAIL_ERROR_MEMORY;
3123 goto err; 3122 goto err;
3124 } 3123 }
3125 3124
3126 if ((flags->fl_flags & MAIL_FLAG_DELETED) != 0) { 3125 if ((flags->fl_flags & MAIL_FLAG_DELETED) != 0) {
3127 flag = mailimap_flag_new_deleted(); 3126 flag = mailimap_flag_new_deleted();
3128 if (flag == NULL) { 3127 if (flag == NULL) {
3129 res = MAIL_ERROR_MEMORY; 3128 res = MAIL_ERROR_MEMORY;
3130 goto free_flag_list; 3129 goto free_flag_list;
3131 } 3130 }
@@ -3230,35 +3229,60 @@ static int flags_to_imap_flags(struct mail_flags * flags,
3230 free(flag_str); 3229 free(flag_str);
3231 res = MAIL_ERROR_MEMORY; 3230 res = MAIL_ERROR_MEMORY;
3232 goto free_flag_list; 3231 goto free_flag_list;
3233 } 3232 }
3234 r = mailimap_flag_list_add(flag_list, flag); 3233 r = mailimap_flag_list_add(flag_list, flag);
3235 if (r != MAILIMAP_NO_ERROR) { 3234 if (r != MAILIMAP_NO_ERROR) {
3236 mailimap_flag_free(flag); 3235 mailimap_flag_free(flag);
3237 res = MAIL_ERROR_MEMORY; 3236 res = MAIL_ERROR_MEMORY;
3238 goto free_flag_list; 3237 goto free_flag_list;
3239 } 3238 }
3240 } 3239 }
3241 } 3240 }
3241
3242 * result = flag_list;
3243
3244 return MAIL_NO_ERROR;
3245
3246 free_flag_list:
3247 mailimap_flag_list_free(flag_list);
3248 err:
3249 return res;
3250}
3242 3251
3252static int flags_to_imap_flags(struct mail_flags * flags,
3253 struct mailimap_store_att_flags ** result)
3254{
3255 struct mailimap_flag_list * flag_list;
3256 struct mailimap_store_att_flags * att_flags;
3257 int res;
3258 int r;
3259
3260 r = imap_flags_to_imap_flags(flags,
3261 &flag_list);
3262 if (r != MAIL_NO_ERROR) {
3263 res = r;
3264 goto err;
3265 }
3266
3243 att_flags = mailimap_store_att_flags_new_set_flags_silent(flag_list); 3267 att_flags = mailimap_store_att_flags_new_set_flags_silent(flag_list);
3244 if (att_flags == NULL) { 3268 if (att_flags == NULL) {
3245 res = MAIL_ERROR_MEMORY; 3269 res = MAIL_ERROR_MEMORY;
3246 goto free_flag_list; 3270 goto free_flag_list;
3247 } 3271 }
3248 3272
3249 * result = att_flags; 3273 * result = att_flags;
3250 3274
3251 return MAIL_NO_ERROR; 3275 return MAIL_NO_ERROR;
3252 3276
3253 free_flag_list: 3277 free_flag_list:
3254 mailimap_flag_list_free(flag_list); 3278 mailimap_flag_list_free(flag_list);
3255 err: 3279 err:
3256 return res; 3280 return res;
3257} 3281}
3258 3282
3259 3283
3260static int 3284static int
3261imap_fetch_result_to_flags(clist * fetch_result, uint32_t index, 3285imap_fetch_result_to_flags(clist * fetch_result, uint32_t index,
3262 struct mail_flags ** result) 3286 struct mail_flags ** result)
3263{ 3287{
3264 clistiter * cur; 3288 clistiter * cur;