ctx->files_count--;
}
+void maildir_save_finish_keywords(struct mail_save_context *_ctx)
+{
+ struct maildir_save_context *ctx = MAILDIR_SAVECTX(_ctx);
+
+ ARRAY_TYPE(keyword_indexes) keyword_idx;
+ t_array_init(&keyword_idx, 8);
+ mail_index_lookup_keywords(ctx->ctx.transaction->view, ctx->seq,
+ &keyword_idx);
+
+ if (array_count(&keyword_idx) > 0) {
+ /* copy keywords */
+ p_array_init(&ctx->file_last->keywords, ctx->pool,
+ array_count(&keyword_idx));
+ array_copy(&ctx->file_last->keywords.arr, 0, &keyword_idx.arr, 0,
+ array_count(&keyword_idx));
+ ctx->have_keywords = TRUE;
+ }
+}
+
static int maildir_save_finish_real(struct mail_save_context *_ctx)
{
struct maildir_save_context *ctx = MAILDIR_SAVECTX(_ctx);
output_errstr = t_strdup(o_stream_get_error(_ctx->data.output));
o_stream_destroy(&_ctx->data.output);
- ARRAY_TYPE(keyword_indexes) keyword_idx;
- t_array_init(&keyword_idx, 8);
- mail_index_lookup_keywords(ctx->ctx.transaction->view, ctx->seq,
- &keyword_idx);
-
- if (array_count(&keyword_idx) > 0) {
- /* copy keywords */
- p_array_init(&ctx->file_last->keywords, ctx->pool,
- array_count(&keyword_idx));
- array_copy(&ctx->file_last->keywords.arr, 0, &keyword_idx.arr, 0,
- array_count(&keyword_idx));
- ctx->have_keywords = TRUE;
- }
+ maildir_save_finish_keywords(_ctx);
if (storage->set->parsed_fsync_mode != FSYNC_MODE_NEVER &&
!ctx->failed) {
maildir_save_alloc(struct mailbox_transaction_context *_t);
int maildir_save_begin(struct mail_save_context *ctx, struct istream *input);
int maildir_save_continue(struct mail_save_context *ctx);
+void maildir_save_finish_keywords(struct mail_save_context *ctx);
int maildir_save_finish(struct mail_save_context *ctx);
void maildir_save_cancel(struct mail_save_context *ctx);