From: Timo Sirainen Date: Fri, 27 Mar 2020 10:19:47 +0000 (+0200) Subject: lib-index: Add mail_cache_compress() X-Git-Tag: 2.3.11.2~417 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dbfef954550d905dee15be5b664f25a8fe450d73;p=thirdparty%2Fdovecot%2Fcore.git lib-index: Add mail_cache_compress() --- diff --git a/src/lib-index/mail-cache-compress.c b/src/lib-index/mail-cache-compress.c index c1100db1b4..c9ceaad229 100644 --- a/src/lib-index/mail-cache-compress.c +++ b/src/lib-index/mail-cache-compress.c @@ -566,6 +566,27 @@ int mail_cache_compress_with_trans(struct mail_cache *cache, return mail_cache_compress_full(cache, FALSE, trans, lock_r); } +int mail_cache_compress(struct mail_cache *cache) +{ + struct mail_index_view *view; + struct mail_index_transaction *trans; + struct mail_cache_compress_lock *lock; + int ret; + + view = mail_index_view_open(cache->index); + trans = mail_index_transaction_begin(view, + MAIL_INDEX_TRANSACTION_FLAG_EXTERNAL); + if ((ret = mail_cache_compress_full(cache, FALSE, trans, &lock)) < 0) + mail_index_transaction_rollback(&trans); + else { + if (mail_index_transaction_commit(&trans) < 0) + ret = -1; + mail_cache_compress_unlock(&lock); + } + mail_index_view_close(&view); + return ret; +} + int mail_cache_compress_forced(struct mail_cache *cache, struct mail_index_transaction *trans, struct mail_cache_compress_lock **lock_r) diff --git a/src/lib-index/mail-cache.h b/src/lib-index/mail-cache.h index b120cbd111..f28de80da3 100644 --- a/src/lib-index/mail-cache.h +++ b/src/lib-index/mail-cache.h @@ -75,6 +75,7 @@ bool mail_cache_need_compress(struct mail_cache *cache); int mail_cache_compress_with_trans(struct mail_cache *cache, struct mail_index_transaction *trans, struct mail_cache_compress_lock **lock_r); +int mail_cache_compress(struct mail_cache *cache); int mail_cache_compress_forced(struct mail_cache *cache, struct mail_index_transaction *trans, struct mail_cache_compress_lock **lock_r);