Change to more natural directory traversal order

This commit is contained in:
Marcus Holland-Moritz 2020-11-24 22:21:26 +01:00
parent b547ff2502
commit ca0dfa3e53

View File

@ -301,6 +301,7 @@ void scanner_<LoggerPolicy>::scan(filesystem_writer& fsw,
try {
auto d = os_->opendir(path);
std::string name;
std::vector<std::shared_ptr<entry>> subdirs;
while (d->read(name)) {
if (name == "." or name == "..") {
@ -329,7 +330,7 @@ void scanner_<LoggerPolicy>::scan(filesystem_writer& fsw,
prog.current.store(pe.get());
prog.dirs_found++;
pe->scan(*os_, prog);
queue.push_back(pe);
subdirs.push_back(pe);
break;
case entry::E_FILE:
@ -361,6 +362,8 @@ void scanner_<LoggerPolicy>::scan(filesystem_writer& fsw,
}
}
queue.insert(queue.begin(), subdirs.begin(), subdirs.end());
prog.dirs_scanned++;
} catch (const boost::system::system_error& e) {
log_.error() << "cannot open directory: " << e.what();