summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2016-07-14 09:54:36 +0200
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>2016-07-14 09:54:36 +0200
commit0ca2604d1f6aa3d5bfd4a622894b3023a5778617 (patch)
treebb262cb6d48826d3051cfe98a5066e2f654c3a52
parentd5ec74143500eb1da9abf7643315022265ada283 (diff)
downloadmemtool-0ca2604d1f6aa3d5bfd4a622894b3023a5778617.tar.gz
memtool-0ca2604d1f6aa3d5bfd4a622894b3023a5778617.tar.xz
improve error handling
- Use EXIT_FAILURE and EXIT_SUCCESS consistently. - Check return value of memmap before using the map. - Ensure that each failure is accompanied by an error message Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
-rw-r--r--memtool.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/memtool.c b/memtool.c
index a6c9d8a..1eef4cb 100644
--- a/memtool.c
+++ b/memtool.c
@@ -209,7 +209,7 @@ static void *memmap(const char *file, off_t addr, size_t size, int readonly)
memfd = open(file, readonly ? O_RDONLY : O_RDWR);
if (memfd < 0) {
perror("open");
- exit(1);
+ return NULL;
}
mmap_start = addr & ~((off_t)pagesize - 1);
@@ -293,19 +293,21 @@ static int cmd_memory_display(int argc, char **argv)
if (optind < argc) {
if (parse_area_spec(argv[optind], &start, &size)) {
printf("could not parse: %s\n", argv[optind]);
- return 1;
+ return EXIT_FAILURE;
}
if (size == ~0)
size = 0x100;
}
mem = memmap(file, start, size, 1);
+ if (!mem)
+ return EXIT_FAILURE;
memory_display(mem, start, size, width, swap);
close(memfd);
- exit(1);
+ return EXIT_SUCCESS;
}
static void usage_mw(void)
@@ -357,14 +359,16 @@ static int cmd_memory_write(int argc, char *argv[])
}
}
- if (optind + 1 >= argc)
- return 1;
+ if (optind + 1 >= argc) {
+ fprintf(stderr, "To few parameters for mw\n");
+ return EXIT_FAILURE;
+ }
adr = strtoull_suffix(argv[optind++], NULL, 0);
mem = memmap(file, adr, argc * width, 0);
if (!mem)
- return 1;
+ return EXIT_FAILURE;
while (optind < argc) {
uint8_t val8;
@@ -460,5 +464,5 @@ int main(int argc, char **argv)
usage();
- exit(1);
+ return EXIT_FAILURE;
}