#pragma once #include #include #include "common/util/FileUtil.h" #include "third-party/xxhash.hpp" struct IsoFile { struct Entry { bool is_dir = false; std::string name; // if file size_t offset_in_file = 0; size_t size = 0; // if dir std::vector children; void print(std::string* result, const std::string& prefix) const; }; std::string print() const; Entry root; int files_extracted = 0; bool shouldHash = false; // There is no reason to map to the files, as we don't retain mappings of each file's expected // hash std::vector hashes = {}; IsoFile(); }; IsoFile find_files_in_iso(FILE* fp); void unpack_iso_files(FILE* fp, IsoFile& layout, const fs::path& dest); IsoFile unpack_iso_files(FILE* fp, const fs::path& dest, bool print_progress, const bool hashFiles = false);