Diffstat (limited to 'kmicromail/libetpan/generic/imapdriver_tools.c') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kmicromail/libetpan/generic/imapdriver_tools.c | 38 |
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 | ||
3110 | static int flags_to_imap_flags(struct mail_flags * flags, | 3110 | int 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 | ||
3252 | static 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 | ||
3260 | static int | 3284 | static int |
3261 | imap_fetch_result_to_flags(clist * fetch_result, uint32_t index, | 3285 | imap_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; |