util/nvmutil: simplify the cat command

the current test is a bit over-engineered, so
i simplified it.

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2026-03-10 00:46:18 +00:00
parent aa67cf087d
commit 8f3bc13ac5
+14 -39
View File
@@ -121,10 +121,7 @@ static void cmd_helper_dump(void);
static void print_mac_from_nvm(size_t partnum); static void print_mac_from_nvm(size_t partnum);
static void hexdump(size_t partnum); static void hexdump(size_t partnum);
static void cmd_helper_cat(void); static void cmd_helper_cat(void);
static void cmd_helper_cat16(void); static void gbe_cat_buf(uint8_t *b);
static void cmd_helper_cat128(void);
static void gbe_catn(size_t n);
static void gbe_cat(uint8_t *b);
static void write_gbe_file(void); static void write_gbe_file(void);
static void override_part_modified(void); static void override_part_modified(void);
static void set_checksum(size_t part); static void set_checksum(size_t part);
@@ -328,13 +325,13 @@ static const struct commands command[] = {
SKIP_CHECKSUM_READ, SKIP_CHECKSUM_WRITE, SKIP_CHECKSUM_READ, SKIP_CHECKSUM_WRITE,
GBE_PART_SIZE }, GBE_PART_SIZE },
{ CMD_CAT16, "cat16", cmd_helper_cat16, ARGC_3, { CMD_CAT16, "cat16", cmd_helper_cat, ARGC_3,
NO_INVERT, SET_MOD_OFF, NO_INVERT, SET_MOD_OFF,
ARG_NOPART, ARG_NOPART,
SKIP_CHECKSUM_READ, SKIP_CHECKSUM_WRITE, SKIP_CHECKSUM_READ, SKIP_CHECKSUM_WRITE,
GBE_PART_SIZE }, GBE_PART_SIZE },
{ CMD_CAT128, "cat128", cmd_helper_cat128, ARGC_3, { CMD_CAT128, "cat128", cmd_helper_cat, ARGC_3,
NO_INVERT, SET_MOD_OFF, NO_INVERT, SET_MOD_OFF,
ARG_NOPART, ARG_NOPART,
SKIP_CHECKSUM_READ, SKIP_CHECKSUM_WRITE, SKIP_CHECKSUM_READ, SKIP_CHECKSUM_WRITE,
@@ -1110,54 +1107,32 @@ hexdump(size_t partnum)
static void static void
cmd_helper_cat(void) cmd_helper_cat(void)
{
gbe_catn(8);
}
static void
cmd_helper_cat16(void)
{
gbe_catn(16);
}
static void
cmd_helper_cat128(void)
{
gbe_catn(128);
}
static void
gbe_catn(size_t n)
{ {
size_t p; size_t p;
size_t ff; size_t ff;
size_t n = 0;
switch (n) { if (cmd_index == CMD_CAT16)
case 8: n = 1;
case 16: else if (cmd_index == CMD_CAT128)
case 128: n = 15;
break; else if (cmd_index != CMD_CAT)
default: err(ECANCELED, "cmd_helper_cat called erroneously");
err(ECANCELED, "gbe_catn: Invalid GBE KB size: %zu", n);
}
fflush(NULL); fflush(NULL);
n -= 8;
n >>= 3;
for (p = 0; p < 2; p++) { for (p = 0; p < 2; p++) {
gbe_cat(buf + (p * GBE_PART_SIZE)); gbe_cat_buf(buf + (p * GBE_PART_SIZE));
for (ff = 0; ff < n; ff++) for (ff = 0; ff < n; ff++)
gbe_cat(pad); gbe_cat_buf(pad);
} }
} }
static void static void
gbe_cat(uint8_t *b) gbe_cat_buf(uint8_t *b)
{ {
size_t wc = 0; size_t wc;
ssize_t w; ssize_t w;
for (wc = 0; wc < GBE_PART_SIZE; wc += w) for (wc = 0; wc < GBE_PART_SIZE; wc += w)