Edward O'Callaghan has uploaded this change for review. ( https://review.coreboot.org/c/flashrom/+/60070 )
Change subject: flashrom.c: Move do_*() helpers into cli_classic.c ......................................................................
flashrom.c: Move do_*() helpers into cli_classic.c
These helpers are only used by the CLI logic and so we localise them here to move towards cli_classic being a pure libflashrom user.
BUG=b:208132085 TEST=`make`
Change-Id: If1112155e2421e0178fd73f847cbb80868387433 Signed-off-by: Edward O'Callaghan quasisec@google.com --- M cli_classic.c M flash.h M flashrom.c 3 files changed, 98 insertions(+), 102 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/70/60070/1
diff --git a/cli_classic.c b/cli_classic.c index 4d702cc..3eecf47 100644 --- a/cli_classic.c +++ b/cli_classic.c @@ -154,6 +154,104 @@ return 0; }
+static int do_read(struct flashctx *const flash, const char *const filename) +{ + int ret; + + unsigned long size = flash->chip->total_size * 1024; + unsigned char *buf = calloc(size, sizeof(unsigned char)); + if (!buf) { + msg_gerr("Memory allocation failed!\n"); + msg_cinfo("FAILED.\n"); + return 1; + } + + ret = flashrom_image_read(flash, buf, size); + if (ret > 0) + goto free_out; + + if (write_buf_to_include_args(flash, buf)) { + ret = 1; + goto free_out; + } + ret = write_buf_to_file(buf, size, filename); + +free_out: + free(buf); + msg_cinfo("%s.\n", ret ? "FAILED" : "done"); + return ret; +} + +static int do_extract(struct flashctx *const flash) +{ + prepare_layout_for_extraction(flash); + return do_read(flash, NULL); +} + +static int do_write(struct flashctx *const flash, const char *const filename, const char *const referencefile) +{ + const size_t flash_size = flash->chip->total_size * 1024; + int ret = 1; + + uint8_t *const newcontents = malloc(flash_size); + uint8_t *const refcontents = referencefile ? malloc(flash_size) : NULL; + + if (!newcontents || (referencefile && !refcontents)) { + msg_gerr("Out of memory!\n"); + goto _free_ret; + } + + /* Read '-w' argument first... */ + if (read_buf_from_file(newcontents, flash_size, filename)) + goto _free_ret; + /* + * ... then update newcontents with contents from files provided to '-i' + * args if needed. + */ + if (read_buf_from_include_args(flash, newcontents)) + goto _free_ret; + + if (referencefile) { + if (read_buf_from_file(refcontents, flash_size, referencefile)) + goto _free_ret; + } + + ret = flashrom_image_write(flash, newcontents, flash_size, refcontents); + +_free_ret: + free(refcontents); + free(newcontents); + return ret; +} + +static int do_verify(struct flashctx *const flash, const char *const filename) +{ + const size_t flash_size = flash->chip->total_size * 1024; + int ret = 1; + + uint8_t *const newcontents = malloc(flash_size); + if (!newcontents) { + msg_gerr("Out of memory!\n"); + goto _free_ret; + } + + /* Read '-v' argument first... */ + if (read_buf_from_file(newcontents, flash_size, filename)) + goto _free_ret; + /* + * ... then update newcontents with contents from files provided to '-i' + * args if needed. + */ + if (read_buf_from_include_args(flash, newcontents)) + goto _free_ret; + + ret = flashrom_image_verify(flash, newcontents, flash_size); + +_free_ret: + free(newcontents); + return ret; +} + int main(int argc, char *argv[]) { const struct flashchip *chip = NULL; diff --git a/flash.h b/flash.h index ab58478..d88c5a3 100644 --- a/flash.h +++ b/flash.h @@ -354,10 +354,6 @@ int write_buf_to_include_args(const struct flashctx *const flash, unsigned char *buf); int prepare_flash_access(struct flashctx *, bool read_it, bool write_it, bool erase_it, bool verify_it); void finalize_flash_access(struct flashctx *); -int do_read(struct flashctx *, const char *filename); -int do_extract(struct flashctx *); -int do_write(struct flashctx *, const char *const filename, const char *const referencefile); -int do_verify(struct flashctx *, const char *const filename); int register_chip_restore(chip_restore_fn_cb_t func, struct flashctx *flash, uint8_t status);
/* Something happened that shouldn't happen, but we can go on. */ diff --git a/flashrom.c b/flashrom.c index a8f1b81..e729eee 100644 --- a/flashrom.c +++ b/flashrom.c @@ -2171,101 +2171,3 @@ }
/** @} */ /* end flashrom-ops */ - -int do_read(struct flashctx *const flash, const char *const filename) -{ - int ret; - - unsigned long size = flash->chip->total_size * 1024; - unsigned char *buf = calloc(size, sizeof(unsigned char)); - if (!buf) { - msg_gerr("Memory allocation failed!\n"); - msg_cinfo("FAILED.\n"); - return 1; - } - - ret = flashrom_image_read(flash, buf, size); - if (ret > 0) - goto free_out; - - if (write_buf_to_include_args(flash, buf)) { - ret = 1; - goto free_out; - } - ret = write_buf_to_file(buf, size, filename); - -free_out: - free(buf); - msg_cinfo("%s.\n", ret ? "FAILED" : "done"); - return ret; -} - -int do_extract(struct flashctx *const flash) -{ - prepare_layout_for_extraction(flash); - return do_read(flash, NULL); -} - -int do_write(struct flashctx *const flash, const char *const filename, const char *const referencefile) -{ - const size_t flash_size = flash->chip->total_size * 1024; - int ret = 1; - - uint8_t *const newcontents = malloc(flash_size); - uint8_t *const refcontents = referencefile ? malloc(flash_size) : NULL; - - if (!newcontents || (referencefile && !refcontents)) { - msg_gerr("Out of memory!\n"); - goto _free_ret; - } - - /* Read '-w' argument first... */ - if (read_buf_from_file(newcontents, flash_size, filename)) - goto _free_ret; - /* - * ... then update newcontents with contents from files provided to '-i' - * args if needed. - */ - if (read_buf_from_include_args(flash, newcontents)) - goto _free_ret; - - if (referencefile) { - if (read_buf_from_file(refcontents, flash_size, referencefile)) - goto _free_ret; - } - - ret = flashrom_image_write(flash, newcontents, flash_size, refcontents); - -_free_ret: - free(refcontents); - free(newcontents); - return ret; -} - -int do_verify(struct flashctx *const flash, const char *const filename) -{ - const size_t flash_size = flash->chip->total_size * 1024; - int ret = 1; - - uint8_t *const newcontents = malloc(flash_size); - if (!newcontents) { - msg_gerr("Out of memory!\n"); - goto _free_ret; - } - - /* Read '-v' argument first... */ - if (read_buf_from_file(newcontents, flash_size, filename)) - goto _free_ret; - /* - * ... then update newcontents with contents from files provided to '-i' - * args if needed. - */ - if (read_buf_from_include_args(flash, newcontents)) - goto _free_ret; - - ret = flashrom_image_verify(flash, newcontents, flash_size); - -_free_ret: - free(newcontents); - return ret; -}