diff options
author | John Crispin <john@phrozen.org> | 2020-11-27 17:20:04 +0100 |
---|---|---|
committer | John Crispin <john@phrozen.org> | 2020-11-27 18:25:14 +0100 |
commit | 0c6fb90e8c6e255e2b5da2c840fe534c7bc8cd7a (patch) | |
tree | 58a3f619946ad00cf86d07af7e47c8d8ee8ce469 | |
parent | f25ab8a8484215e5fc88c952f25db9a06de311f7 (diff) | |
download | fstools-0c6fb90e8c6e255e2b5da2c840fe534c7bc8cd7a.tar.gz |
jffs2-reset: allow doing a factory reset and passing a sysupgrade.tgz
Signed-off-by: John Crispin <john@phrozen.org>
-rw-r--r-- | jffs2reset.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/jffs2reset.c b/jffs2reset.c index dbe0498..2236e38 100644 --- a/jffs2reset.c +++ b/jffs2reset.c @@ -40,7 +40,7 @@ ask_user(void) return 0; } -static int jffs2_reset(struct volume *v, int reset) +static int jffs2_reset(struct volume *v, int reset, int keep) { char *mp; @@ -48,7 +48,7 @@ static int jffs2_reset(struct volume *v, int reset) if (mp) { ULOG_INFO("%s is mounted as %s, only erasing files\n", v->blk, mp); fs_state_set("/overlay", FS_STATE_PENDING); - overlay_delete(mp, false); + overlay_delete(mp, keep); mount(mp, "/", NULL, MS_REMOUNT, 0); } else { ULOG_INFO("%s is not mounted\n", v->blk); @@ -93,8 +93,8 @@ static int jffs2_mark(struct volume *v) int main(int argc, char **argv) { struct volume *v; - int ch, yes = 0, reset = 0; - while ((ch = getopt(argc, argv, "yr")) != -1) { + int ch, yes = 0, reset = 0, keep = 0; + while ((ch = getopt(argc, argv, "yrk")) != -1) { switch(ch) { case 'y': yes = 1; @@ -102,6 +102,9 @@ int main(int argc, char **argv) case 'r': reset = 1; break; + case 'k': + keep = 1; + break; } } @@ -128,5 +131,5 @@ int main(int argc, char **argv) volume_init(v); if (!strcmp(*argv, "jffs2mark")) return jffs2_mark(v); - return jffs2_reset(v, reset); + return jffs2_reset(v, reset, keep); } |