1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-08 21:51:15 +02:00

30469: Src/builtin.c: allow reverse listing of history using

fc -r, but don't allow reverse execution of commands at all.
This commit is contained in:
Peter Stephenson 2012-05-08 11:29:32 +00:00
parent bd95e7658f
commit d60de3001b
2 changed files with 14 additions and 6 deletions

View file

@ -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> 2012-05-03 Peter Stephenson <pws@csr.com>
* unposted, see 30465: Doc/Zsh/expn.yo, Doc/Zsh/params.yo: add * 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 * This is used by the shell to define $ZSH_PATCHLEVEL
* $Revision: 1.5648 $ * $Revision: 1.5649 $
***************************************************** *****************************************************

View file

@ -1498,7 +1498,7 @@ bin_fc(char *nam, char **argv, Options ops, int func)
} }
if (OPT_ISSET(ops,'l')) { if (OPT_ISSET(ops,'l')) {
/* list the required part of the history */ /* 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(); unqueue_signals();
} }
else { else {
@ -1530,7 +1530,7 @@ bin_fc(char *nam, char **argv, Options ops, int func)
} }
} }
ops->ind['n'] = 1; /* No line numbers here. */ 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; char *editor;
if (func == BIN_R) if (func == BIN_R)
@ -1639,7 +1639,7 @@ fcsubs(char **sp, struct asgment *sub)
/**/ /**/
static int static int
fclist(FILE *f, Options ops, zlong first, zlong last, 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; int fclistdone = 0;
zlong tmp; zlong tmp;
@ -1652,8 +1652,8 @@ fclist(FILE *f, Options ops, zlong first, zlong last,
last = first; last = first;
first = tmp; first = tmp;
} }
if (first > last) { if (is_command && first > last) {
zwarnnam("fc", "history events are in wrong order, aborted"); zwarnnam("fc", "history events can't be executed backwards, aborted");
if (f != stdout) if (f != stdout)
fclose(f); fclose(f);
return 1; return 1;