44153: rm: Accept -R as equivalent to -r

5.9
Matthew Martin 5 years ago
parent 9b267ff1eb
commit 5267bdc4ef

@ -7,6 +7,9 @@
2019-03-21 Matthew Martin <phy1729@gmail.com>
* 44153: Doc/Zsh/mod_files.yo, Src/Modules/files.c: rm: Accept
-R as equivalent to -r.
* 44149: Completion/Unix/Command/_mkdir,
Completion/Unix/Command/_stat: Use _pick_variant -b.

@ -144,15 +144,15 @@ fall back on copying and removing files; if this behaviour is desired,
use tt(cp) and tt(rm) manually. This may change in a future version.
)
findex(rm)
item(tt(rm) [ tt(-dfirs) ] var(filename) ...)(
item(tt(rm) [ tt(-dfiRrs) ] var(filename) ...)(
Removes files and directories specified.
Normally, tt(rm) will not remove directories (except with the tt(-r)
option). The tt(-d) option causes tt(rm) to try removing directories
Normally, tt(rm) will not remove directories (except with the tt(-R) or tt(-r)
options). The tt(-d) option causes tt(rm) to try removing directories
with tt(unlink) (see manref(unlink)(2)), the same method used for files.
Typically only the super-user can actually succeed in unlinking
directories in this way.
tt(-d) takes precedence over tt(-r).
tt(-d) takes precedence over tt(-R) and tt(-r).
By default, the user will be queried before removing any file
that the user cannot write to, but writable files will be silently
@ -162,9 +162,9 @@ any files. The tt(-f) option causes files to be
silently deleted, without querying, and suppresses all error indications.
tt(-f) takes precedence.
The tt(-r) option causes tt(rm) to recursively descend into directories,
deleting all files in the directory before removing the directory with
the tt(rmdir) system call (see manref(rmdir)(2)).
The tt(-R) and tt(-r) options cause tt(rm) to recursively descend into
directories, deleting all files in the directory before removing the directory
with the tt(rmdir) system call (see manref(rmdir)(2)).
The tt(-s) option is a zsh extension to tt(rm) functionality. It enables
paranoid behaviour, intended to avoid common security problems involving

@ -613,7 +613,8 @@ bin_rm(char *nam, char **args, Options ops, UNUSED(int func))
rmm.opt_interact = OPT_ISSET(ops,'i') && !OPT_ISSET(ops,'f');
rmm.opt_unlinkdir = OPT_ISSET(ops,'d');
err = recursivecmd(nam, OPT_ISSET(ops,'f'),
OPT_ISSET(ops,'r') && !OPT_ISSET(ops,'d'),
!OPT_ISSET(ops,'d') && (OPT_ISSET(ops,'R') ||
OPT_ISSET(ops,'r')),
OPT_ISSET(ops,'s'),
args, recurse_donothing, rm_dirpost, rm_leaf, &rmm);
return OPT_ISSET(ops,'f') ? 0 : err;
@ -798,7 +799,7 @@ static struct builtin bintab[] = {
BUILTIN("ln", 0, bin_ln, 1, -1, BIN_LN, LN_OPTS, NULL),
BUILTIN("mkdir", 0, bin_mkdir, 1, -1, 0, "pm:", NULL),
BUILTIN("mv", 0, bin_ln, 2, -1, BIN_MV, "fi", NULL),
BUILTIN("rm", 0, bin_rm, 1, -1, 0, "dfirs", NULL),
BUILTIN("rm", 0, bin_rm, 1, -1, 0, "dfiRrs", NULL),
BUILTIN("rmdir", 0, bin_rmdir, 1, -1, 0, NULL, NULL),
BUILTIN("sync", 0, bin_sync, 0, 0, 0, NULL, NULL),
/* The "safe" zsh-only names */
@ -808,7 +809,7 @@ static struct builtin bintab[] = {
BUILTIN("zf_ln", 0, bin_ln, 1, -1, BIN_LN, LN_OPTS, NULL),
BUILTIN("zf_mkdir", 0, bin_mkdir, 1, -1, 0, "pm:", NULL),
BUILTIN("zf_mv", 0, bin_ln, 2, -1, BIN_MV, "fi", NULL),
BUILTIN("zf_rm", 0, bin_rm, 1, -1, 0, "dfirs", NULL),
BUILTIN("zf_rm", 0, bin_rm, 1, -1, 0, "dfiRrs", NULL),
BUILTIN("zf_rmdir", 0, bin_rmdir, 1, -1, 0, NULL, NULL),
BUILTIN("zf_sync", 0, bin_sync, 0, 0, 0, NULL, NULL),

Loading…
Cancel
Save