From c3bb3906ee5abbee7ead3970d395d2d44937a1d8 Mon Sep 17 00:00:00 2001
From: John Crispin <john@openwrt.org>
Date: Wed, 3 Dec 2014 20:22:32 +0000
Subject: [PATCH] mtd: make the dump commnd honour the -o option

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 43512
---
 package/system/mtd/src/mtd.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/package/system/mtd/src/mtd.c b/package/system/mtd/src/mtd.c
index db3fc804c9..72b9ddfe21 100644
--- a/package/system/mtd/src/mtd.c
+++ b/package/system/mtd/src/mtd.c
@@ -274,7 +274,7 @@ mtd_erase(const char *mtd)
 }
 
 static int
-mtd_dump(const char *mtd, int size)
+mtd_dump(const char *mtd, int part_offset, int size)
 {
 	int ret = 0, offset = 0;
 	int fd;
@@ -292,6 +292,9 @@ mtd_dump(const char *mtd, int size)
 	if (!size)
 		size = mtdsize;
 
+	if (part_offset)
+		lseek(fd, part_offset, SEEK_SET);
+
 	buf = malloc(erasesize);
 	if (!buf)
 		return -1;
@@ -769,10 +772,6 @@ int main (int argc, char **argv)
 				}
 				break;
 			case 'o':
-				if (!mtd_fixtrx) {
-					fprintf(stderr, "-o: is not available on this platform\n");
-					usage();
-				}
 				errno = 0;
 				offset = strtoul(optarg, 0, 0);
 				if (errno) {
@@ -872,7 +871,7 @@ int main (int argc, char **argv)
 			mtd_verify(device, imagefile);
 			break;
 		case CMD_DUMP:
-			mtd_dump(device, dump_len);
+			mtd_dump(device, offset, dump_len);
 			break;
 		case CMD_ERASE:
 			if (!unlocked)
-- 
GitLab