Commit 363d9f01 authored by Max Kellermann's avatar Max Kellermann

db/update/Walk: load all .mpdignore files of all parent directories

When updating everything, this did work, but if updating only a subdirectory, the ".mpdignore" in the parents were not used. Closes https://github.com/MusicPlayerDaemon/MPD/issues/1172
parent db0682a4
ver 0.22.9 (not yet released)
* database
- simple: load all .mpdignore files of all parent directories
* Windows
- fix build failure with SQLite
......
......@@ -458,6 +458,28 @@ UpdateWalk::DirectoryMakeUriParentChecked(Directory &root,
return directory;
}
static void
LoadExcludeLists(std::forward_list<ExcludeList> &lists,
const Storage &storage, const Directory &directory) noexcept
{
assert(!lists.empty());
if (!directory.IsRoot())
LoadExcludeLists(lists, storage, *directory.parent);
lists.emplace_front();
LoadExcludeListOrLog(storage, directory, lists.front());
}
static auto
LoadExcludeLists(const Storage &storage, const Directory &directory) noexcept
{
std::forward_list<ExcludeList> lists;
lists.emplace_front();
LoadExcludeLists(lists, storage, directory);
return lists;
}
inline void
UpdateWalk::UpdateUri(Directory &root, const char *uri) noexcept
try {
......@@ -478,9 +500,8 @@ try {
return;
}
ExcludeList exclude_list;
UpdateDirectoryChild(*parent, exclude_list, name, info);
const auto exclude_lists = LoadExcludeLists(storage, *parent);
UpdateDirectoryChild(*parent, exclude_lists.front(), name, info);
} catch (...) {
LogError(std::current_exception());
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment