diff options
author | Antony Pavlov <antonynpavlov@gmail.com> | 2012-11-26 13:51:40 +0400 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-11-26 11:14:40 +0100 |
commit | 6552d2991ff5fb0d6632ab5dd91ac44be39d6992 (patch) | |
tree | 5b99cde9b619336e7f59894a85bb8329b6b95b7f /commands/mem.c | |
parent | f23198905c4e943a019acc0a7210d4e586650425 (diff) | |
download | barebox-6552d2991ff5fb0d6632ab5dd91ac44be39d6992.tar.gz barebox-6552d2991ff5fb0d6632ab5dd91ac44be39d6992.tar.xz |
commands: md: add the '-x' option (swap bytes)
Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands/mem.c')
-rw-r--r-- | commands/mem.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/commands/mem.c b/commands/mem.c index a42b7bacb3..9873e52832 100644 --- a/commands/mem.c +++ b/commands/mem.c @@ -136,7 +136,7 @@ static int open_and_lseek(const char *filename, int mode, loff_t pos) } static int mem_parse_options(int argc, char *argv[], char *optstr, int *mode, - char **sourcefile, char **destfile) + char **sourcefile, char **destfile, int *swab) { int opt; @@ -157,6 +157,9 @@ static int mem_parse_options(int argc, char *argv[], char *optstr, int *mode, case 'd': *destfile = optarg; break; + case 'x': + *swab = 1; + break; default: return -1; } @@ -173,11 +176,13 @@ static int do_mem_md(int argc, char *argv[]) int fd; char *filename = DEVMEM; int mode = O_RWSIZE_4; + int swab = 0; if (argc < 2) return COMMAND_ERROR_USAGE; - if (mem_parse_options(argc, argv, "bwls:", &mode, &filename, NULL) < 0) + if (mem_parse_options(argc, argv, "bwls:x", &mode, &filename, NULL, + &swab) < 0) return 1; if (optind < argc) { @@ -204,7 +209,7 @@ static int do_mem_md(int argc, char *argv[]) goto out; if ((ret = memory_display(rw_buf, start, r, - mode >> O_RWSIZE_SHIFT, 0))) + mode >> O_RWSIZE_SHIFT, swab))) goto out; start += r; @@ -225,6 +230,7 @@ static const __maybe_unused char cmd_md_help[] = " -b output in bytes\n" " -w output in halfwords (16bit)\n" " -l output in words (32bit)\n" +" -x swap bytes at output\n" "\n" "Memory regions:\n" "Memory regions can be specified in two different forms: start+size\n" @@ -250,7 +256,8 @@ static int do_mem_mw(int argc, char *argv[]) int mode = O_RWSIZE_4; loff_t adr; - if (mem_parse_options(argc, argv, "bwld:", &mode, NULL, &filename) < 0) + if (mem_parse_options(argc, argv, "bwld:", &mode, NULL, &filename, + NULL) < 0) return 1; if (optind + 1 >= argc) @@ -318,7 +325,8 @@ static int do_mem_cmp(int argc, char *argv[]) int offset = 0; struct stat statbuf; - if (mem_parse_options(argc, argv, "bwls:d:", &mode, &sourcefile, &destfile) < 0) + if (mem_parse_options(argc, argv, "bwls:d:", &mode, &sourcefile, + &destfile, NULL) < 0) return 1; if (optind + 2 > argc) @@ -425,7 +433,8 @@ static int do_mem_cp(int argc, char *argv[]) struct stat statbuf; int ret = 0; - if (mem_parse_options(argc, argv, "bwls:d:", &mode, &sourcefile, &destfile) < 0) + if (mem_parse_options(argc, argv, "bwls:d:", &mode, &sourcefile, + &destfile, NULL) < 0) return 1; if (optind + 2 > argc) @@ -530,7 +539,8 @@ static int do_memset(int argc, char *argv[]) int ret = 1; char *file = DEVMEM; - if (mem_parse_options(argc, argv, "bwld:", &mode, NULL, &file) < 0) + if (mem_parse_options(argc, argv, "bwld:", &mode, NULL, &file, + NULL) < 0) return 1; if (optind + 3 > argc) |