From 6a226cb195550e13a7581d2029bfcff02d3ffcb7 Mon Sep 17 00:00:00 2001 From: acoul Date: Wed, 24 Nov 2010 14:10:01 +0000 Subject: [PATCH] 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 --- package/mtd/src/mtd.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/package/mtd/src/mtd.c b/package/mtd/src/mtd.c index b2d760e84..e4b6c79f0 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 erase 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;