On Thu, Aug 03, 2023 at 03:43:32PM +0200, Ahmad Fatoum wrote: > rm supports multiple arguments, but will stop at the first nonexistent > file and print an error message that can't be silenced. Mimic other > implementations and implement -f for silently ignoring nonexistent files. > > Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> > --- > v1 -> v2: > - only ignore -ENOENT and not all error codes > --- > commands/Kconfig | 3 ++- > commands/rm.c | 16 +++++++++++----- > 2 files changed, 13 insertions(+), 6 deletions(-) Applied, thanks Sascha > > diff --git a/commands/Kconfig b/commands/Kconfig > index 844f7046282b..eb95b2a5fbcc 100644 > --- a/commands/Kconfig > +++ b/commands/Kconfig > @@ -1031,10 +1031,11 @@ config CMD_RM > help > Remove files > > - Usage: rm [-r] FILES... > + Usage: rm [-rf] FILES... > > Options: > -r remove directories and their contents recursively > + -f ignore nonexistent files > > config CMD_RMDIR > tristate > diff --git a/commands/rm.c b/commands/rm.c > index be5c19222141..c35cf2d2d412 100644 > --- a/commands/rm.c > +++ b/commands/rm.c > @@ -12,13 +12,16 @@ > > static int do_rm(int argc, char *argv[]) > { > - int i, opt, recursive = 0; > + int i, opt, recursive = 0, force = 0; > > - while ((opt = getopt(argc, argv, "r")) > 0) { > + while ((opt = getopt(argc, argv, "rf")) > 0) { > switch (opt) { > case 'r': > recursive = 1; > break; > + case 'f': > + force = 1; > + break; > default: > return COMMAND_ERROR_USAGE; > } > @@ -37,8 +40,10 @@ static int do_rm(int argc, char *argv[]) > else > ret = unlink(argv[i]); > if (ret) { > - printf("could not remove %s: %m\n", argv[i]); > - return 1; > + if (!force || ret != -ENOENT) > + printf("could not remove %s: %m\n", argv[i]); > + if (!force) > + return 1; > } > i++; > } > @@ -49,12 +54,13 @@ static int do_rm(int argc, char *argv[]) > BAREBOX_CMD_HELP_START(rm) > BAREBOX_CMD_HELP_TEXT("Options:") > BAREBOX_CMD_HELP_OPT ("-r", "remove directories and their contents recursively") > +BAREBOX_CMD_HELP_OPT ("-f", "ignore nonexistent files") > BAREBOX_CMD_HELP_END > > BAREBOX_CMD_START(rm) > .cmd = do_rm, > BAREBOX_CMD_DESC("remove files") > - BAREBOX_CMD_OPTS("[-r] FILES...") > + BAREBOX_CMD_OPTS("[-rf] FILES...") > BAREBOX_CMD_GROUP(CMD_GRP_FILE) > BAREBOX_CMD_HELP(cmd_rm_help) > BAREBOX_CMD_END > -- > 2.39.2 > > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |