diff options
author | Daniel Campello <campello@chromium.org> | 2021-04-16 15:26:42 -0600 |
---|---|---|
committer | Edward O'Callaghan <quasisec@chromium.org> | 2021-05-02 23:45:43 +0000 |
commit | ce983bccaab450d358854494f15c2d8a1846d56b (patch) | |
tree | 79d41a980587c2a1ebe40b65f837edd16232d387 /layout.c | |
parent | 0969e43b3fae48c90aaf1df284560f6b76f84efd (diff) | |
download | flashrom-ce983bccaab450d358854494f15c2d8a1846d56b.tar.gz flashrom-ce983bccaab450d358854494f15c2d8a1846d56b.tar.bz2 flashrom-ce983bccaab450d358854494f15c2d8a1846d56b.zip |
cli_classic.c: add -x option for do_extract()
This change introduces a new option to extract all layout regions to
files with the name of each region (or with the provided filename via
-i region:file). It is implemented by mutating the flash layout to
include all regions and backfilling the entry->file with entry->name
(replacing spaces with underscores)
Signed-off-by: Daniel Campello <campello@chromium.org>
Change-Id: I8c69223fa92cf5b50abe070f1ab9f19d3b42f6ff
Reviewed-on: https://review.coreboot.org/c/flashrom/+/52450
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Diffstat (limited to 'layout.c')
-rw-r--r-- | layout.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -15,6 +15,7 @@ * GNU General Public License for more details. */ +#include <ctype.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> @@ -308,6 +309,24 @@ int normalize_romentries(const struct flashctx *flash) return ret; } +void prepare_layout_for_extraction(struct flashctx *flash) +{ + const struct flashrom_layout *const l = get_layout(flash); + unsigned int i, j; + + for (i = 0; i < l->num_entries; ++i) { + l->entries[i].included = true; + + if (!l->entries[i].file) + l->entries[i].file = strdup(l->entries[i].name); + + for (j = 0; l->entries[i].file[j]; j++) { + if (isspace(l->entries[i].file[j])) + l->entries[i].file[j] = '_'; + } + } +} + const struct romentry *layout_next_included_region( const struct flashrom_layout *const l, const chipoff_t where) { |