summaryrefslogtreecommitdiff
path: root/util/cbfstool/cbfs_image.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/cbfstool/cbfs_image.c')
-rw-r--r--util/cbfstool/cbfs_image.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c
index 95b2db7083..64266b0b5a 100644
--- a/util/cbfstool/cbfs_image.c
+++ b/util/cbfstool/cbfs_image.c
@@ -1076,6 +1076,41 @@ int cbfs_print_entry_info(struct cbfs_image *image, struct cbfs_file *entry,
return 0;
}
+static int cbfs_print_parseable_entry_info(struct cbfs_image *image,
+ struct cbfs_file *entry, void *arg)
+{
+ FILE *fp = (FILE *)arg;
+ const char *name;
+ const char *type;
+ size_t offset;
+ size_t metadata_size;
+ size_t data_size;
+ const char *sep = "\t";
+
+ if (!cbfs_is_valid_entry(image, entry)) {
+ ERROR("cbfs_print_entry_info: Invalid entry at 0x%x\n",
+ cbfs_get_entry_addr(image, entry));
+ return -1;
+ }
+
+ name = entry->filename;
+ if (*name == '\0')
+ name = "(empty)";
+ type = get_cbfs_entry_type_name(ntohl(entry->type)),
+ metadata_size = ntohl(entry->offset);
+ data_size = ntohl(entry->len);
+ offset = cbfs_get_entry_addr(image, entry);
+
+ fprintf(fp, "%s%s", name, sep);
+ fprintf(fp, "0x%zx%s", offset, sep);
+ fprintf(fp, "%s%s", type, sep);
+ fprintf(fp, "0x%zx%s", metadata_size, sep);
+ fprintf(fp, "0x%zx%s", data_size, sep);
+ fprintf(fp, "0x%zx\n", metadata_size + data_size);
+
+ return 0;
+}
+
int cbfs_print_directory(struct cbfs_image *image)
{
if (cbfs_is_legacy_cbfs(image))
@@ -1085,6 +1120,26 @@ int cbfs_print_directory(struct cbfs_image *image)
return 0;
}
+int cbfs_print_parseable_directory(struct cbfs_image *image)
+{
+ int i;
+ const char *header[] = {
+ "Name",
+ "Offset",
+ "Type",
+ "Metadata Size",
+ "Data Size",
+ "Total Size",
+ };
+ const char *sep = "\t";
+
+ for (i = 0; i < ARRAY_SIZE(header) - 1; i++)
+ fprintf(stdout, "%s%s", header[i], sep);
+ fprintf(stdout, "%s\n", header[i]);
+ cbfs_walk(image, cbfs_print_parseable_entry_info, stdout);
+ return 0;
+}
+
int cbfs_merge_empty_entry(struct cbfs_image *image, struct cbfs_file *entry,
unused void *arg)
{