diff --git a/src/dwarfs/inode_manager.cpp b/src/dwarfs/inode_manager.cpp index d628d4e8..0eb3f946 100644 --- a/src/dwarfs/inode_manager.cpp +++ b/src/dwarfs/inode_manager.cpp @@ -22,12 +22,16 @@ #include #include #include +#include #include +#include #include #include #include #include +#include + #include "dwarfs/compiler.h" #include "dwarfs/entry.h" #include "dwarfs/error.h" @@ -371,6 +375,18 @@ void inode_manager_::order_inodes_by_nilsimsa( inode_manager::order_cb const& fn, file_order_options const& file_order) { auto count = inodes_.size(); + if (auto fname = ::getenv("DWARFS_NILSIMSA_DUMP")) { + std::ofstream ofs{fname}; + + for (auto const& i : inodes_) { + auto const& h = i->nilsimsa_similarity_hash(); + if (!h.empty()) { + ofs << fmt::format("{0:016x}{1:016x}{2:016x}{3:016x}\t{4}\t{5}\n", h[0], + h[1], h[2], h[3], i->size(), i->any()->name()); + } + } + } + std::vector> inodes; inodes.swap(inodes_); inodes_.reserve(count);