db/update/Walk: move code to LoadExcludeList()

This commit is contained in:
Max Kellermann 2021-05-25 22:37:26 +02:00
parent 7a6823dcdf
commit db0682a469
1 changed files with 24 additions and 11 deletions

View File

@ -312,6 +312,29 @@ UpdateWalk::SkipSymlink(const Directory *directory,
#endif #endif
} }
static void
LoadExcludeListOrThrow(const Storage &storage, const Directory &directory,
ExcludeList &exclude_list)
{
Mutex mutex;
auto is = InputStream::OpenReady(storage.MapUTF8(PathTraitsUTF8::Build(directory.GetPath(),
".mpdignore")).c_str(),
mutex);
exclude_list.Load(std::move(is));
}
static void
LoadExcludeListOrLog(const Storage &storage, const Directory &directory,
ExcludeList &exclude_list) noexcept
{
try {
LoadExcludeListOrThrow(storage, directory, exclude_list);
} catch (...) {
if (!IsFileNotFound(std::current_exception()))
LogError(std::current_exception());
}
}
bool bool
UpdateWalk::UpdateDirectory(Directory &directory, UpdateWalk::UpdateDirectory(Directory &directory,
const ExcludeList &exclude_list, const ExcludeList &exclude_list,
@ -331,17 +354,7 @@ UpdateWalk::UpdateDirectory(Directory &directory,
} }
ExcludeList child_exclude_list(exclude_list); ExcludeList child_exclude_list(exclude_list);
LoadExcludeListOrLog(storage, directory, child_exclude_list);
try {
Mutex mutex;
auto is = InputStream::OpenReady(storage.MapUTF8(PathTraitsUTF8::Build(directory.GetPath(),
".mpdignore")).c_str(),
mutex);
child_exclude_list.Load(std::move(is));
} catch (...) {
if (!IsFileNotFound(std::current_exception()))
LogError(std::current_exception());
}
if (!child_exclude_list.IsEmpty()) if (!child_exclude_list.IsEmpty())
RemoveExcludedFromDirectory(directory, child_exclude_list); RemoveExcludedFromDirectory(directory, child_exclude_list);