From 99a0eaaa7660d81964304bea4475c6ea8cb809c5 Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Tue, 11 Jul 2023 22:52:59 +0300 Subject: [PATCH] lib/store: improve dirstamp / set_dirstamp code Modernize. --- lib/mu-store.cc | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/mu-store.cc b/lib/mu-store.cc index ed3be7e9..92d046c7 100644 --- a/lib/mu-store.cc +++ b/lib/mu-store.cc @@ -547,27 +547,29 @@ Store::move_message(Store::Id id, time_t Store::dirstamp(const std::string& path) const { - constexpr auto epoch = static_cast(0); - const auto ts{xapian_db().metadata(path)}; - if (ts.empty()) - return epoch; - else - return static_cast(strtoll(ts.c_str(), NULL, 16)); + std::string ts; + + { + std::unique_lock lock{priv_->lock_}; + ts = xapian_db().metadata(path); + } + + return ts.empty() ? 0 /*epoch*/ : ::strtoll(ts.c_str(), {}, 16); } void Store::set_dirstamp(const std::string& path, time_t tstamp) { - std::array data{}; - const auto len = static_cast( - g_snprintf(data.data(), data.size(), "%zx", tstamp)); + std::unique_lock lock{priv_->lock_}; - xapian_db().set_metadata(path, std::string{data.data(), len}); + xapian_db().set_metadata(path, mu_format("{:x}", tstamp)); } bool Store::contains_message(const std::string& path) const { + std::unique_lock lock{priv_->lock_}; + return xapian_db().term_exists(field_from_id(Field::Id::Path).xapian_term(path)); }