diff options
Diffstat (limited to 'package/mtd')
-rw-r--r-- | package/mtd/src/mtd.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/package/mtd/src/mtd.c b/package/mtd/src/mtd.c index b2d760e84f..e4b6c79f02 100644 --- a/package/mtd/src/mtd.c +++ b/package/mtd/src/mtd.c @@ -74,6 +74,7 @@ static char *imagefile = NULL; static char *jffs2file = NULL, *jffs2dir = JFFS2_DEFAULT_DIR; static int buflen = 0; int quiet; +int no_erase; int mtdsize = 0; int erasesize = 0; @@ -518,6 +519,8 @@ resume: } /* need to erase the next block before writing data to it */ + if(no_erase) + { while (w + buflen > e) { if (!quiet) fprintf(stderr, "\b\b\b[e]"); @@ -544,6 +547,7 @@ resume: /* erase the chunk */ e += erasesize; } + } if (!quiet) fprintf(stderr, "\b\b\b[w]"); @@ -595,6 +599,7 @@ static void usage(void) "Following options are available:\n" " -q quiet mode (once: no [w] on writing,\n" " twice: no status messages)\n" + " -n write without first erasing the blocks\n" " -r reboot after successful command\n" " -f force write without trx checks\n" " -e <device> erase <device> before executing the command\n" @@ -646,12 +651,13 @@ int main (int argc, char **argv) force = 0; buflen = 0; quiet = 0; + no_erase = 0; while ((ch = getopt(argc, argv, #ifdef FIS_SUPPORT "F:" #endif - "frqe:d:j:o:")) != -1) + "frnqe:d:j:o:")) != -1) switch (ch) { case 'f': force = 1; @@ -659,6 +665,9 @@ int main (int argc, char **argv) case 'r': boot = 1; break; + case 'n': + no_erase = 1; + break; case 'j': jffs2file = optarg; break; |