From: Timo Sirainen Date: Mon, 10 Aug 2020 15:00:09 +0000 (+0300) Subject: lib-index: mail_index_reopen_if_changed() - Add reopened_r parameter X-Git-Tag: 2.3.14.rc1~311 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=83a06c785fd256b8ae9a5a866d222d9aea89a8df;p=thirdparty%2Fdovecot%2Fcore.git lib-index: mail_index_reopen_if_changed() - Add reopened_r parameter --- diff --git a/src/lib-index/mail-index-map-read.c b/src/lib-index/mail-index-map-read.c index 1fcd6699ee..e584eaedc9 100644 --- a/src/lib-index/mail-index-map-read.c +++ b/src/lib-index/mail-index-map-read.c @@ -307,14 +307,14 @@ mail_index_map_latest_file(struct mail_index *index, const char **reason_r) struct mail_index_map *old_map, *new_map; struct stat st; uoff_t file_size; - bool use_mmap, unusable = FALSE; + bool use_mmap, reopened, unusable = FALSE; const char *error; int ret, try; *reason_r = NULL; index->reopen_main_index = FALSE; - ret = mail_index_reopen_if_changed(index, reason_r); + ret = mail_index_reopen_if_changed(index, &reopened, reason_r); if (ret <= 0) { if (ret < 0) return -1; diff --git a/src/lib-index/mail-index-private.h b/src/lib-index/mail-index-private.h index ea1cf393db..e523e4dfde 100644 --- a/src/lib-index/mail-index-private.h +++ b/src/lib-index/mail-index-private.h @@ -250,7 +250,10 @@ int mail_index_create_tmp_file(struct mail_index *index, int mail_index_try_open_only(struct mail_index *index); void mail_index_close_file(struct mail_index *index); -int mail_index_reopen_if_changed(struct mail_index *index, +/* Returns 1 if index was successfully (re-)opened, 0 if the index no longer + exists, -1 if I/O error. If 1 is returned, reopened_r=TRUE if a new index + was actually reopened (or if index wasn't even open before this call). */ +int mail_index_reopen_if_changed(struct mail_index *index, bool *reopened_r, const char **reason_r); /* Update/rewrite the main index file from index->map */ void mail_index_write(struct mail_index *index, bool want_rotate, diff --git a/src/lib-index/mail-index.c b/src/lib-index/mail-index.c index 0ef4bebd79..cf2d4c7e72 100644 --- a/src/lib-index/mail-index.c +++ b/src/lib-index/mail-index.c @@ -815,12 +815,14 @@ int mail_index_unlink(struct mail_index *index) } } -int mail_index_reopen_if_changed(struct mail_index *index, +int mail_index_reopen_if_changed(struct mail_index *index, bool *reopened_r, const char **reason_r) { struct stat st1, st2; int ret; + *reopened_r = FALSE; + if (MAIL_INDEX_IS_IN_MEMORY(index)) { *reason_r = "in-memory index"; return 0; @@ -863,8 +865,10 @@ int mail_index_reopen_if_changed(struct mail_index *index, final: if ((ret = mail_index_try_open_only(index)) == 0) *reason_r = "index not found via open()"; - else if (ret > 0) + else if (ret > 0) { *reason_r = "index opened"; + *reopened_r = TRUE; + } return ret; }