summaryrefslogtreecommitdiff
path: root/partition_tools
diff options
context:
space:
mode:
authorDavid Anderson <dvander@google.com>2019-12-12 17:12:27 -0800
committerDavid Anderson <dvander@google.com>2019-12-13 16:15:53 -0800
commitab1b095bc93918ee721b1b6002a394d5b195bdec (patch)
tree1a56e6ec2e84dfcb49dc43a59ecdcaf41684224d /partition_tools
parent018adfb8180b9640852e077ebd3aa85d66fb6ede (diff)
downloadextras-ab1b095bc93918ee721b1b6002a394d5b195bdec.tar.gz
lpdump: Add support for the metadata flags field.
Bug: 134949511 Test: manual test Change-Id: Iafc5193c71315b14f192fcc0ae42188a51b0d2cb
Diffstat (limited to 'partition_tools')
-rw-r--r--partition_tools/lpdump.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/partition_tools/lpdump.cc b/partition_tools/lpdump.cc
index 098d45ba..af370483 100644
--- a/partition_tools/lpdump.cc
+++ b/partition_tools/lpdump.cc
@@ -68,6 +68,18 @@ static std::string BuildFlagString(const std::vector<std::string>& strings) {
return strings.empty() ? "none" : android::base::Join(strings, ",");
}
+static std::string BuildHeaderFlagString(uint32_t flags) {
+ std::vector<std::string> strings;
+
+ for (uint32_t i = 0; i < sizeof(flags) * 8; i++) {
+ if (!(flags & (1 << i))) {
+ continue;
+ }
+ strings.emplace_back("unknown_flag_bit_" + std::to_string(i));
+ }
+ return BuildFlagString(strings);
+}
+
static std::string BuildAttributeString(uint32_t attrs) {
std::vector<std::string> strings;
if (attrs & LP_PARTITION_ATTR_READONLY) strings.emplace_back("readonly");
@@ -291,6 +303,7 @@ static void PrintMetadata(const LpMetadata& pt, std::ostream& cout) {
cout << "Metadata size: " << (pt.header.header_size + pt.header.tables_size) << " bytes\n";
cout << "Metadata max size: " << pt.geometry.metadata_max_size << " bytes\n";
cout << "Metadata slot count: " << pt.geometry.metadata_slot_count << "\n";
+ cout << "Header flags: " << BuildHeaderFlagString(pt.header.flags) << "\n";
cout << "Partition table:\n";
cout << "------------------------\n";