mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-09 10:01:16 +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:
parent
bd95e7658f
commit
d60de3001b
2 changed files with 14 additions and 6 deletions
10
ChangeLog
10
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>
|
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 $
|
||||||
*****************************************************
|
*****************************************************
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue