From b27744de8a0c39b13a01039ba3812bd48feb5255 Mon Sep 17 00:00:00 2001 From: khali Date: Mon, 4 May 2015 11:24:54 +0000 Subject: dmidecode: Simplify function dmi_table_dump We can let function dmi_table read the memory chunk and free the memory for us, this avoids some code duplication. --- CHANGELOG | 1 + dmidecode.c | 22 +++++----------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 343f695..cb7b202 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ 2015-05-04 Jean Delvare * dmidecode.c: Move table decoding to a separate function. + * dmidecode.c: Simplify function dmi_table_dump. 2015-04-28 Jean Delvare diff --git a/dmidecode.c b/dmidecode.c index 1c277e5..05858b4 100644 --- a/dmidecode.c +++ b/dmidecode.c @@ -4357,20 +4357,11 @@ static void dmi_table_string(const struct dmi_header *h, const u8 *data, u16 ver } } -static void dmi_table_dump(off_t base, u32 len, const char *devmem) +static void dmi_table_dump(const u8 *buf, u32 len) { - u8 *buf; - - if ((buf = mem_chunk(base, len, devmem)) == NULL) - { - fprintf(stderr, "Failed to read table, sorry.\n"); - return; - } - if (!(opt.flags & FLAG_QUIET)) printf("# Writing %d bytes to %s.\n", len, opt.dumpfile); write_dump(32, len, buf, opt.dumpfile, 0); - free(buf); } static void dmi_table_decode(u8 *buf, u32 len, u16 num, u16 ver, u32 flags) @@ -4502,12 +4493,6 @@ static void dmi_table(off_t base, u32 len, u16 num, u16 ver, const char *devmem, if (flags & FLAG_NO_FILE_OFFSET) base = 0; - if (opt.flags & FLAG_DUMP_BIN) - { - dmi_table_dump(base, len, devmem); - return; - } - if ((buf = mem_chunk(base, len, devmem)) == NULL) { fprintf(stderr, "Table is unreachable, sorry." @@ -4518,7 +4503,10 @@ static void dmi_table(off_t base, u32 len, u16 num, u16 ver, const char *devmem, return; } - dmi_table_decode(buf, len, num, ver, flags); + if (opt.flags & FLAG_DUMP_BIN) + dmi_table_dump(buf, len); + else + dmi_table_decode(buf, len, num, ver, flags); free(buf); } -- cgit v1.2.1