diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2012-05-08 11:29:32 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2012-05-08 11:29:32 +0000 |
commit | d60de3001bbcc91c4d4e2c65499df9bb5e79fe7c (patch) | |
tree | bb777e6159d79e6b103d5a5b4fd83692588e5a07 | |
parent | bd95e7658f22a6b1c11c8accb1e1ee618888d440 (diff) | |
download | zsh-d60de3001bbcc91c4d4e2c65499df9bb5e79fe7c.tar.gz zsh-d60de3001bbcc91c4d4e2c65499df9bb5e79fe7c.tar.xz zsh-d60de3001bbcc91c4d4e2c65499df9bb5e79fe7c.zip |
30469: Src/builtin.c: allow reverse listing of history using
fc -r, but don't allow reverse execution of commands at all.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | Src/builtin.c | 10 |
2 files changed, 14 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog index aba6c0aa8..c93f8a3e9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2012-05-08 Peter Stephenson <pws@csr.com> + + * 30469: Src/builtin.c: allow reverse listing of history using + fc -r, but don't allow reverse execution of commands at all. + + * unposted: Doc/Zsh/contrib.yo: clarify that zargs is different + from xargs. + 2012-05-03 Peter Stephenson <pws@csr.com> * unposted, see 30465: Doc/Zsh/expn.yo, Doc/Zsh/params.yo: add @@ -16276,5 +16284,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.5648 $ +* $Revision: 1.5649 $ ***************************************************** diff --git a/Src/builtin.c b/Src/builtin.c index c32b1c023..faa5ed374 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -1498,7 +1498,7 @@ bin_fc(char *nam, char **argv, Options ops, int func) } if (OPT_ISSET(ops,'l')) { /* list the required part of the history */ - retval = fclist(stdout, ops, first, last, asgf, pprog); + retval = fclist(stdout, ops, first, last, asgf, pprog, 0); unqueue_signals(); } else { @@ -1530,7 +1530,7 @@ bin_fc(char *nam, char **argv, Options ops, int func) } } ops->ind['n'] = 1; /* No line numbers here. */ - if (!fclist(out, ops, first, last, asgf, pprog)) { + if (!fclist(out, ops, first, last, asgf, pprog, 1)) { char *editor; if (func == BIN_R) @@ -1639,7 +1639,7 @@ fcsubs(char **sp, struct asgment *sub) /**/ static int fclist(FILE *f, Options ops, zlong first, zlong last, - struct asgment *subs, Patprog pprog) + struct asgment *subs, Patprog pprog, int is_command) { int fclistdone = 0; zlong tmp; @@ -1652,8 +1652,8 @@ fclist(FILE *f, Options ops, zlong first, zlong last, last = first; first = tmp; } - if (first > last) { - zwarnnam("fc", "history events are in wrong order, aborted"); + if (is_command && first > last) { + zwarnnam("fc", "history events can't be executed backwards, aborted"); if (f != stdout) fclose(f); return 1; |