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