From 5dcbe4342f4e8d064c639460ba566ab0b9865cc3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Fri, 2 Apr 2021 14:12:58 +0200 Subject: [PATCH] firmware-utils: bcm4908img: use "info" command displaying file info MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit BCM4908 image format contains some info that may be useful for info / debugging purposes. Signed-off-by: Rafał Miłecki --- src/bcm4908img.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/bcm4908img.c b/src/bcm4908img.c index 16e0afe..56a7904 100644 --- a/src/bcm4908img.c +++ b/src/bcm4908img.c @@ -262,32 +262,39 @@ static int bcm4908img_parse(FILE *fp, struct bcm4908img_info *info) { } /************************************************** - * Check + * Info **************************************************/ -static int bcm4908img_check(int argc, char **argv) { +static int bcm4908img_info(int argc, char **argv) { struct bcm4908img_info info; const char *pathname = NULL; FILE *fp; + int c; int err = 0; - if (argc >= 3) - pathname = argv[2]; + while ((c = getopt(argc, argv, "i:")) != -1) { + switch (c) { + case 'i': + pathname = optarg; + break; + } + } fp = bcm4908img_open(pathname, "r"); if (!fp) { - fprintf(stderr, "Failed to open %s\n", pathname); + fprintf(stderr, "Failed to open BCM4908 image\n"); err = -EACCES; goto out; } err = bcm4908img_parse(fp, &info); if (err) { - fprintf(stderr, "Failed to parse %s\n", pathname); + fprintf(stderr, "Failed to parse BCM4908 image\n"); goto err_close; } - printf("Found a valid BCM4908 image (crc: 0x%08x)\n", info.crc32); + printf("Vendor header length:\t%zu\n", info.vendor_header_size); + printf("Checksum:\t0x%08x\n", info.crc32); err_close: bcm4908img_close(fp); @@ -438,8 +445,9 @@ out: static void usage() { printf("Usage:\n"); printf("\n"); - printf("Checking a BCM4908 image:\n"); - printf("\tbcm4908img check \t\t\tcheck if images is valid\n"); + printf("Info about a BCM4908 image:\n"); + printf("\tbcm4908img info \n"); + printf("\t-i \t\t\t\tinput BCM490 image\n"); printf("\n"); printf("Creating a new BCM4908 image:\n"); printf("\tbcm4908img create [options]\n"); @@ -450,8 +458,9 @@ static void usage() { int main(int argc, char **argv) { if (argc > 1) { - if (!strcmp(argv[1], "check")) - return bcm4908img_check(argc, argv); + optind++; + if (!strcmp(argv[1], "info")) + return bcm4908img_info(argc, argv); else if (!strcmp(argv[1], "create")) return bcm4908img_create(argc, argv); } -- 2.30.2