summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkhali <khali>2015-05-04 11:24:54 +0000
committerkhali <khali>2015-05-04 11:24:54 +0000
commitb27744de8a0c39b13a01039ba3812bd48feb5255 (patch)
tree1a22bd225e880d44eaa9587f9afe1efd4b70b3c6
parenteb6ee0135eb393ef6d33a9956bd25be327af1b6d (diff)
downloaddmidecode-b27744de8a0c39b13a01039ba3812bd48feb5255.tar.gz
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.
-rw-r--r--CHANGELOG1
-rw-r--r--dmidecode.c22
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 <jdelvare@suse.de>
* dmidecode.c: Move table decoding to a separate function.
+ * dmidecode.c: Simplify function dmi_table_dump.
2015-04-28 Jean Delvare <jdelvare@suse.de>
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);
}