From ca0dfa3e5397d5b18b912a07f44f801e7ba7b891 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Tue, 24 Nov 2020 22:21:26 +0100 Subject: [PATCH] Change to more natural directory traversal order --- src/dwarfs/scanner.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dwarfs/scanner.cpp b/src/dwarfs/scanner.cpp index c5137348..5dfe5017 100644 --- a/src/dwarfs/scanner.cpp +++ b/src/dwarfs/scanner.cpp @@ -301,6 +301,7 @@ void scanner_::scan(filesystem_writer& fsw, try { auto d = os_->opendir(path); std::string name; + std::vector> subdirs; while (d->read(name)) { if (name == "." or name == "..") { @@ -329,7 +330,7 @@ void scanner_::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_::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();