From 968328d0bb9df585145bea370c843b1efe39e2b4 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Thu, 28 Aug 2025 20:34:08 +0200 Subject: [PATCH] feat(filesystem_v2): add `has_valid_section_index()` --- include/dwarfs/reader/filesystem_v2.h | 5 +++++ src/reader/filesystem_v2.cpp | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/dwarfs/reader/filesystem_v2.h b/include/dwarfs/reader/filesystem_v2.h index 541ca2c4..891ae513 100644 --- a/include/dwarfs/reader/filesystem_v2.h +++ b/include/dwarfs/reader/filesystem_v2.h @@ -104,6 +104,10 @@ class filesystem_v2_lite { filesystem_version version() const { return lite_->version(); } + bool has_valid_section_index() const { + return lite_->has_valid_section_index(); + } + void walk(std::function const& func) const { lite_->walk(func); } @@ -344,6 +348,7 @@ class filesystem_v2_lite { virtual ~impl_lite() = default; virtual filesystem_version version() const = 0; + virtual bool has_valid_section_index() const = 0; virtual void walk(std::function const& func) const = 0; virtual void diff --git a/src/reader/filesystem_v2.cpp b/src/reader/filesystem_v2.cpp index 2a8b3ff3..91fb7d48 100644 --- a/src/reader/filesystem_v2.cpp +++ b/src/reader/filesystem_v2.cpp @@ -220,6 +220,7 @@ class filesystem_ final { nlohmann::json metadata_as_json() const; std::string serialize_metadata_as_json(bool simple) const; filesystem_version version() const; + bool has_valid_section_index() const; void walk(std::function const& func) const; void walk_data_order(std::function const& func) const; dir_entry_view root() const; @@ -390,6 +391,7 @@ class filesystem_ final { file_off_t const image_offset_; filesystem_options const options_; filesystem_version version_; + bool has_valid_section_index_{false}; PERFMON_CLS_PROXY_DECL PERFMON_CLS_TIMER_DECL(find_path) PERFMON_CLS_TIMER_DECL(find_inode) @@ -518,6 +520,7 @@ filesystem_::filesystem_( if (parser.has_index()) { LOG_DEBUG << "found valid section index"; + has_valid_section_index_ = true; } header_ = parser.header(); @@ -814,6 +817,11 @@ filesystem_version filesystem_::version() const { return version_; } +template +bool filesystem_::has_valid_section_index() const { + return has_valid_section_index_; +} + template void filesystem_::walk( std::function const& func) const { @@ -1175,6 +1183,9 @@ class filesystem_common_ : public Base { : fs_{lgr, os, std::move(mm), options, perfmon} {} filesystem_version version() const override { return fs_.version(); } + bool has_valid_section_index() const override { + return fs_.has_valid_section_index(); + } void walk(std::function const& func) const override { fs_.walk(func); }