summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
Diffstat (limited to 'commands')
-rw-r--r--commands/memcmp.c41
-rw-r--r--commands/memcpy.c41
2 files changed, 4 insertions, 78 deletions
diff --git a/commands/memcmp.c b/commands/memcmp.c
index 48957b4..d1c4f52 100644
--- a/commands/memcmp.c
+++ b/commands/memcmp.c
@@ -34,54 +34,17 @@
#include <linux/stat.h>
#include <xfuncs.h>
-static char *devmem = "/dev/mem";
-
static int do_memcmp(int argc, char *argv[])
{
- loff_t addr1, addr2, count = ~0;
- int mode = O_RWSIZE_1;
- char *sourcefile = devmem;
- char *destfile = devmem;
+ loff_t count;
int sourcefd, destfd;
char *buf, *source_data, *dest_data;
int ret = 1;
int offset = 0;
- struct stat statbuf;
-
- if (mem_parse_options(argc, argv, "bwlqs:d:", &mode, &sourcefile,
- &destfile, NULL) < 0)
- return 1;
-
- if (optind + 2 > argc)
- return COMMAND_ERROR_USAGE;
-
- addr1 = strtoull_suffix(argv[optind], NULL, 0);
- addr2 = strtoull_suffix(argv[optind + 1], NULL, 0);
-
- if (optind + 2 == argc) {
- if (sourcefile == devmem) {
- printf("source and count not given\n");
- return 1;
- }
- if (stat(sourcefile, &statbuf)) {
- perror("stat");
- return 1;
- }
- count = statbuf.st_size - addr1;
- } else {
- count = strtoull_suffix(argv[optind + 2], NULL, 0);
- }
- sourcefd = open_and_lseek(sourcefile, mode | O_RDONLY, addr1);
- if (sourcefd < 0)
+ if (memcpy_parse_options(argc, argv, &sourcefd, &destfd, &count) < 0)
return 1;
- destfd = open_and_lseek(destfile, mode | O_RDONLY, addr2);
- if (destfd < 0) {
- close(sourcefd);
- return 1;
- }
-
buf = xmalloc(RW_BUF_SIZE + RW_BUF_SIZE);
source_data = buf;
dest_data = buf + RW_BUF_SIZE;
diff --git a/commands/memcpy.c b/commands/memcpy.c
index ef25fb7..5f0047f 100644
--- a/commands/memcpy.c
+++ b/commands/memcpy.c
@@ -34,53 +34,16 @@
#include <linux/stat.h>
#include <xfuncs.h>
-static char *devmem = "/dev/mem";
-
static int do_memcpy(int argc, char *argv[])
{
- loff_t count, dest, src;
- char *sourcefile = devmem;
- char *destfile = devmem;
+ loff_t count;
int sourcefd, destfd;
- int mode = 0;
- struct stat statbuf;
int ret = 0;
char *buf;
- if (mem_parse_options(argc, argv, "bwlqs:d:", &mode, &sourcefile,
- &destfile, NULL) < 0)
- return 1;
-
- if (optind + 2 > argc)
- return COMMAND_ERROR_USAGE;
-
- src = strtoull_suffix(argv[optind], NULL, 0);
- dest = strtoull_suffix(argv[optind + 1], NULL, 0);
-
- if (optind + 2 == argc) {
- if (sourcefile == devmem) {
- printf("source and count not given\n");
- return 1;
- }
- if (stat(sourcefile, &statbuf)) {
- perror("stat");
- return 1;
- }
- count = statbuf.st_size - src;
- } else {
- count = strtoull_suffix(argv[optind + 2], NULL, 0);
- }
-
- sourcefd = open_and_lseek(sourcefile, mode | O_RDONLY, src);
- if (sourcefd < 0)
+ if (memcpy_parse_options(argc, argv, &sourcefd, &destfd, &count) < 0)
return 1;
- destfd = open_and_lseek(destfile, O_WRONLY | O_CREAT | mode, dest);
- if (destfd < 0) {
- close(sourcefd);
- return 1;
- }
-
buf = xmalloc(RW_BUF_SIZE);
while (count > 0) {