diff options
author | acoul <acoul@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-11-24 14:10:01 +0000 |
---|---|---|
committer | acoul <acoul@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-11-24 14:10:01 +0000 |
commit | 6a226cb195550e13a7581d2029bfcff02d3ffcb7 (patch) | |
tree | ab3cb71b54ff9716727d7c597047b4469468e576 /package/mtd | |
parent | f7ff90366de0f9ebd0e69914703488ef17219072 (diff) |
package/mtd: (enhancement) add option to prevent erase when writing to flash. (closes #8308)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@24132 3c298f89-4303-0410-b956-a3cf2f4a3e73
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; |