diff options
author | Matthew Martin <phy1729@gmail.com> | 2019-03-20 23:07:53 -0500 |
---|---|---|
committer | Matthew Martin <phy1729@gmail.com> | 2019-03-21 22:04:55 -0500 |
commit | 5267bdc4ef91c1609bf0499861cc46f63e9e5784 (patch) | |
tree | a80889804fce3fc6717b65d1b8e7aa512bb996ae | |
parent | 9b267ff1ebd02177613c25ba8e032fdcc4b8d349 (diff) | |
download | zsh-5267bdc4ef91c1609bf0499861cc46f63e9e5784.tar.gz zsh-5267bdc4ef91c1609bf0499861cc46f63e9e5784.tar.xz zsh-5267bdc4ef91c1609bf0499861cc46f63e9e5784.zip |
44153: rm: Accept -R as equivalent to -r
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Doc/Zsh/mod_files.yo | 14 | ||||
-rw-r--r-- | Src/Modules/files.c | 7 |
3 files changed, 14 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog index b645c492d..e5941f6a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -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. diff --git a/Doc/Zsh/mod_files.yo b/Doc/Zsh/mod_files.yo index 3cf7b61e3..9f9634c86 100644 --- a/Doc/Zsh/mod_files.yo +++ b/Doc/Zsh/mod_files.yo @@ -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 diff --git a/Src/Modules/files.c b/Src/Modules/files.c index 85764d55e..6d20e38a8 100644 --- a/Src/Modules/files.c +++ b/Src/Modules/files.c @@ -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), |