diff options
Diffstat (limited to 'commands/barebox-update.c')
-rw-r--r-- | commands/barebox-update.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/commands/barebox-update.c b/commands/barebox-update.c index 92e0efab6a..c2f2b68e08 100644 --- a/commands/barebox-update.c +++ b/commands/barebox-update.c @@ -26,10 +26,10 @@ static int do_barebox_update(int argc, char *argv[]) { - int opt, ret; + int opt, ret, repair = 0; struct bbu_data data = {}; - while ((opt = getopt(argc, argv, "t:yf:ld:")) > 0) { + while ((opt = getopt(argc, argv, "t:yf:ld:r")) > 0) { switch (opt) { case 'd': data.devicefile = optarg; @@ -48,19 +48,24 @@ static int do_barebox_update(int argc, char *argv[]) printf("registered update handlers:\n"); bbu_handlers_list(); return 0; + case 'r': + repair = 1; + break; default: return COMMAND_ERROR_USAGE; } } - if (!(argc - optind)) - return COMMAND_ERROR_USAGE; - - data.imagefile = argv[optind]; + if (argc - optind > 0) { + data.imagefile = argv[optind]; - data.image = read_file(data.imagefile, &data.len); - if (!data.image) - return -errno; + data.image = read_file(data.imagefile, &data.len); + if (!data.image) + return -errno; + } else { + if (!repair) + return COMMAND_ERROR_USAGE; + } ret = barebox_update(&data); @@ -74,6 +79,7 @@ BAREBOX_CMD_HELP_TEXT("Options:") BAREBOX_CMD_HELP_OPT("-l\t", "list registered targets") BAREBOX_CMD_HELP_OPT("-t TARGET", "specify data target handler name") BAREBOX_CMD_HELP_OPT("-d DEVICE", "write image to DEVICE") +BAREBOX_CMD_HELP_OPT("-r\t", "refresh or repair. Do not update, but repair an existing image") BAREBOX_CMD_HELP_OPT("-y\t", "autom. use 'yes' when asking confirmations") BAREBOX_CMD_HELP_OPT("-f LEVEL", "set force level") BAREBOX_CMD_HELP_END @@ -81,7 +87,7 @@ BAREBOX_CMD_HELP_END BAREBOX_CMD_START(barebox_update) .cmd = do_barebox_update, BAREBOX_CMD_DESC("update barebox to persistent media") - BAREBOX_CMD_OPTS("[-ltdyf] [IMAGE]") + BAREBOX_CMD_OPTS("[-ltdyfr] [IMAGE]") BAREBOX_CMD_GROUP(CMD_GRP_MISC) BAREBOX_CMD_HELP(cmd_barebox_update_help) BAREBOX_CMD_END |