[coreboot-gerrit] Patch set updated for coreboot: cbfstool: support compressed files in cbfstool print

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Tue Sep 1 00:17:27 CEST 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11359

-gerrit

commit 59167ce809e5480d4e80c2038caac2e445ceb953
Author: Patrick Georgi <patrick at georgi-clan.de>
Date:   Wed Aug 26 12:13:03 2015 +0200

    cbfstool: support compressed files in cbfstool print
    
    Display compressed and decompressed sizes, as well as the compression
    algorithm used, when a compressed file is encountered.
    
    Change-Id: I13c2332702c4a5bec379e1ebda72753e06f8e135
    Signed-off-by: Patrick Georgi <patrick at georgi-clan.de>
---
 util/cbfstool/cbfs_image.c | 35 ++++++++++++++++++++++++++++++-----
 1 file changed, 30 insertions(+), 5 deletions(-)

diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c
index 49ff2cd..e64be9e 100644
--- a/util/cbfstool/cbfs_image.c
+++ b/util/cbfstool/cbfs_image.c
@@ -777,11 +777,36 @@ int cbfs_print_entry_info(struct cbfs_image *image, struct cbfs_file *entry,
 	if (!fp)
 		fp = stdout;
 
-	fprintf(fp, "%-30s 0x%-8x %-12s %d\n",
-		*name ? name : "(empty)",
-		cbfs_get_entry_addr(image, entry),
-		get_cbfs_entry_type_name(ntohl(entry->type)),
-		ntohl(entry->len));
+	unsigned int compression = CBFS_COMPRESS_NONE;
+	unsigned int decompressed_size = 0;
+	for (struct cbfs_file_attribute *attr = cbfs_file_first_attr(entry);
+	     attr != NULL;
+	     attr = cbfs_file_next_attr(entry, attr)) {
+		if (ntohl(attr->tag) == CBFS_FILE_ATTR_TAG_COMPRESSION) {
+			struct cbfs_file_attr_compression *ac =
+				(struct cbfs_file_attr_compression *)attr;
+			compression = ntohl(ac->compression);
+			decompressed_size = ntohl(ac->decompressed_size);
+		}
+	}
+
+	if (compression == CBFS_COMPRESS_NONE) {
+		fprintf(fp, "%-30s 0x%-8x %-12s %d\n",
+			*name ? name : "(empty)",
+			cbfs_get_entry_addr(image, entry),
+			get_cbfs_entry_type_name(ntohl(entry->type)),
+			ntohl(entry->len));
+	} else {
+		fprintf(fp, "%-30s 0x%-8x %-12s %d (%d after %s decompression)\n",
+			*name ? name : "(empty)",
+			cbfs_get_entry_addr(image, entry),
+			get_cbfs_entry_type_name(ntohl(entry->type)),
+			ntohl(entry->len),
+			decompressed_size,
+			lookup_name_by_type(types_cbfs_compression,
+				compression, "(unknown)")
+			);
+	}
 
 	if (!verbose)
 		return 0;



More information about the coreboot-gerrit mailing list