store: add catch blocks for dirstamp/set_dirstamp
This commit is contained in:
@ -487,11 +487,14 @@ Store::dirstamp(const std::string& path) const
|
|||||||
{
|
{
|
||||||
LOCKED;
|
LOCKED;
|
||||||
|
|
||||||
const auto ts = priv_->db().get_metadata(path);
|
constexpr auto epoch = static_cast<time_t>(0);
|
||||||
if (ts.empty())
|
return xapian_try([&] {
|
||||||
return 0;
|
const auto ts = priv_->db().get_metadata(path);
|
||||||
else
|
if (ts.empty())
|
||||||
return (time_t)strtoll(ts.c_str(), NULL, 16);
|
return epoch;
|
||||||
|
else
|
||||||
|
return static_cast<time_t>(strtoll(ts.c_str(), NULL, 16));
|
||||||
|
}, epoch);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -500,9 +503,11 @@ Store::set_dirstamp(const std::string& path, time_t tstamp)
|
|||||||
LOCKED;
|
LOCKED;
|
||||||
|
|
||||||
std::array<char, 2 * sizeof(tstamp) + 1> data{};
|
std::array<char, 2 * sizeof(tstamp) + 1> data{};
|
||||||
const std::size_t len = g_snprintf(data.data(), data.size(), "%zx", (size_t)tstamp);
|
const auto len = static_cast<size_t>(g_snprintf(data.data(), data.size(), "%zx", tstamp));
|
||||||
|
|
||||||
priv_->writable_db().set_metadata(path, std::string{data.data(), len});
|
xapian_try([&] {
|
||||||
|
priv_->writable_db().set_metadata(path, std::string{data.data(), len});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
MuMsg*
|
MuMsg*
|
||||||
|
|||||||
Reference in New Issue
Block a user