mtd: make the dump commnd honour the -o option
authorblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 3 Dec 2014 20:22:32 +0000 (20:22 +0000)
committerblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 3 Dec 2014 20:22:32 +0000 (20:22 +0000)
Signed-off-by: John Crispin <blogic@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@43512 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/system/mtd/src/mtd.c

index db3fc80..72b9ddf 100644 (file)
@@ -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)