[coreboot] New patch to review for coreboot: ae3731f cbfstool: Add internal cbfs_find_file()

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Wed Mar 13 01:09:17 CET 2013


Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2686

-gerrit

commit ae3731f6aea3404c48c3d26885b52f30431fa2e2
Author: Aaron Durbin <adurbin at chromium.org>
Date:   Fri Dec 14 17:14:15 2012 -0600

    cbfstool: Add internal cbfs_find_file()
    
    Future work will require the ability to locate a named file.
    Add cbfs_find_file() to find the named file and return a struct
    cbfs_file.
    
    Change-Id: I3998c5e76c75de5672bef3f5e04a098e5e1778ed
    Signed-off-by: Aaron Durbin <adurbin at chromium.org>
---
 util/cbfstool/common.c | 21 +++++++++++++++++++++
 util/cbfstool/common.h |  2 ++
 2 files changed, 23 insertions(+)

diff --git a/util/cbfstool/common.c b/util/cbfstool/common.c
index 3c8dca5..0517d9a 100644
--- a/util/cbfstool/common.c
+++ b/util/cbfstool/common.c
@@ -870,3 +870,24 @@ uint32_t cbfs_find_location(const char *romfile, uint32_t filesize,
 	free(rom);
 	return ret;
 }
+
+struct cbfs_file *cbfs_find_file(const char *name)
+{
+	uint32_t current = phys_start;
+	while (current < phys_end) {
+		if (!cbfs_file_header(current)) {
+			current += align;
+			continue;
+		}
+		struct cbfs_file *thisfile =
+		    (struct cbfs_file *)phys_to_virt(current);
+		uint32_t length = ntohl(thisfile->len);
+		char *fname = (char *)(phys_to_virt(current) + sizeof(struct cbfs_file));
+		if (!strcmp(fname, name))
+			return thisfile;
+		current =
+		    ALIGN(current + ntohl(thisfile->len) +
+			  ntohl(thisfile->offset), align);
+	}
+	return NULL;
+}
diff --git a/util/cbfstool/common.h b/util/cbfstool/common.h
index e197143..2a18d9c 100644
--- a/util/cbfstool/common.h
+++ b/util/cbfstool/common.h
@@ -130,4 +130,6 @@ void print_supported_filetypes(void);
 
 #define ARRAY_SIZE(a) (int)(sizeof(a) / sizeof((a)[0]))
 
+struct cbfs_file;
+struct cbfs_file *cbfs_find_file(const char *name);
 #endif



More information about the coreboot mailing list