store: removing trailing / for root_maildir

Other code depends on that.
This commit is contained in:
Dirk-Jan C. Binnema 2023-07-06 21:33:01 +03:00
parent 75a2cab3f1
commit 4171fe14c3
2 changed files with 16 additions and 4 deletions

View File

@ -52,6 +52,16 @@ static_assert(std::is_same<Store::Id, Xapian::docid>::value, "wrong type for Sto
// Properties // Properties
constexpr auto ExpectedSchemaVersion = MU_STORE_SCHEMA_VERSION; constexpr auto ExpectedSchemaVersion = MU_STORE_SCHEMA_VERSION;
static std::string
remove_slash(const std::string& str)
{
auto clean{str};
while (clean[clean.length() - 1] == '/')
clean.pop_back();
return clean;
}
struct Store::Private { struct Store::Private {
Private(const std::string& path, bool readonly): Private(const std::string& path, bool readonly):
@ -59,7 +69,7 @@ struct Store::Private {
: XapianDb::Flavor::Open)}, : XapianDb::Flavor::Open)},
config_{xapian_db_}, config_{xapian_db_},
contacts_cache_{config_}, contacts_cache_{config_},
root_maildir_{config_.get<Config::Id::RootMaildir>()} root_maildir_{remove_slash(config_.get<Config::Id::RootMaildir>())}
{} {}
Private(const std::string& path, const std::string& root_maildir, Private(const std::string& path, const std::string& root_maildir,
@ -67,7 +77,7 @@ struct Store::Private {
xapian_db_{make_db(path, XapianDb::Flavor::CreateOverwrite)}, xapian_db_{make_db(path, XapianDb::Flavor::CreateOverwrite)},
config_{make_config(xapian_db_, root_maildir, conf)}, config_{make_config(xapian_db_, root_maildir, conf)},
contacts_cache_{config_}, contacts_cache_{config_},
root_maildir_{config_.get<Config::Id::RootMaildir>()} root_maildir_{remove_slash(config_.get<Config::Id::RootMaildir>())}
{} {}
~Private() try { ~Private() try {
@ -123,7 +133,7 @@ struct Store::Private {
if (conf) if (conf)
config.import_configurable(*conf); config.import_configurable(*conf);
config.set<Config::Id::RootMaildir>(root_maildir); config.set<Config::Id::RootMaildir>(remove_slash(root_maildir));
config.set<Config::Id::SchemaVersion>(ExpectedSchemaVersion); config.set<Config::Id::SchemaVersion>(ExpectedSchemaVersion);
return config; return config;

View File

@ -42,7 +42,9 @@ static Store
make_test_store(const std::string& test_path, const TestMap& test_map, make_test_store(const std::string& test_path, const TestMap& test_map,
const StringVec &personal_addresses) const StringVec &personal_addresses)
{ {
std::string maildir = test_path + "/Maildir"; std::string maildir = test_path + "/Maildir/";
// note the trailing '/'
g_test_bug("2513");
/* write messages to disk */ /* write messages to disk */
for (auto&& item: test_map) { for (auto&& item: test_map) {