[coreboot-gerrit] Patch set updated for coreboot: cbfstool: factor out parsing compression file attributes

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Mon Aug 31 22:18:43 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/11361

-gerrit

commit 6d933faf720bd4b533396f1e7e76663374b52528
Author: Patrick Georgi <patrick at georgi-clan.de>
Date:   Wed Aug 26 12:23:26 2015 +0200

    cbfstool: factor out parsing compression file attributes
    
    cbfstool extract also needs it.
    
    Change-Id: I8302bb18c5f797eb0a43ec4e4269790f3d49a896
    Signed-off-by: Patrick Georgi <patrick at georgi-clan.de>
---
 util/cbfstool/cbfs_image.c | 33 ++++++++++++++++++++++-----------
 1 file changed, 22 insertions(+), 11 deletions(-)

diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c
index 8eef91c..082fe06 100644
--- a/util/cbfstool/cbfs_image.c
+++ b/util/cbfstool/cbfs_image.c
@@ -178,6 +178,26 @@ static void cbfs_decode_payload_segment(struct cbfs_payload_segment *output,
 	assert(seg.size == 0);
 }
 
+static int cbfs_file_get_compression_info(struct cbfs_file *entry,
+	uint32_t *decompressed_size)
+{
+	unsigned int compression = CBFS_COMPRESS_NONE;
+	*decompressed_size = ntohl(entry->len);
+	for (struct cbfs_file_attribute *attr = cbfs_file_first_attr(entry);
+	     attr != NULL;
+	     attr = cbfs_file_next_attr(entry, attr)) {
+		if (attr->tag == CBFS_FILE_ATTR_TAG_COMPRESSION) {
+			struct cbfs_file_attr_compression *ac =
+				(struct cbfs_file_attr_compression *)attr;
+			compression = ntohl(ac->compression);
+			if (decompressed_size)
+				*decompressed_size =
+					ntohl(ac->decompressed_size);
+		}
+	}
+	return compression;
+}
+
 void cbfs_get_header(struct cbfs_header *header, void *src)
 {
 	struct buffer outheader;
@@ -777,18 +797,9 @@ int cbfs_print_entry_info(struct cbfs_image *image, struct cbfs_file *entry,
 	if (!fp)
 		fp = stdout;
 
-	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 (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);
-		}
-	}
+	unsigned int compression = cbfs_file_get_compression_info(entry,
+		&decompressed_size);
 
 	if (compression == CBFS_COMPRESS_NONE) {
 		fprintf(fp, "%-30s 0x%-8x %-12s %d\n",



More information about the coreboot-gerrit mailing list