diff options
Diffstat (limited to 'Src')
-rw-r--r-- | Src/builtin.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/Src/builtin.c b/Src/builtin.c index 083e50f95..815ec0aca 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -1208,7 +1208,7 @@ printif(char *str, int c) int bin_fc(char *nam, char **argv, char *ops, int func) { - int first = -1, last = -1, retval, minflag = 0; + int first = -1, last = -1, retval; char *s; struct asgment *asgf = NULL, *asgl = NULL; Patprog pprog = NULL; @@ -1267,7 +1267,6 @@ bin_fc(char *nam, char **argv, char *ops, int func) } /* interpret and check first history line specifier */ if (*argv) { - minflag = **argv == '-'; first = fcgetcomm(*argv); if (first == -1) { unqueue_signals(); @@ -1299,9 +1298,9 @@ bin_fc(char *nam, char **argv, char *ops, int func) if (last == -1) last = ops['l']? addhistnum(curline.histnum,-1,0) : first; if (first < firsthist()) - first = firsthist() - (first == last); + first = firsthist() - (last < firsthist()); if (last > curhist) - last = (minflag) ? curhist : first; + last = curhist; else if (last < first) last = first; if (ops['l']) { @@ -1365,13 +1364,11 @@ fcgetcomm(char *s) /* First try to match a history number. Negative * * numbers indicate reversed numbering. */ - if ((cmd = atoi(s))) { + if ((cmd = atoi(s)) != 0 || *s == '0') { if (cmd < 0) cmd = addhistnum(curline.histnum,cmd,HIST_FOREIGN); - if (cmd < firsthist()) { - zwarnnam("fc", "bad history number: %d", 0, cmd); - return -1; - } + if (cmd < 0) + cmd = 0; return cmd; } /* not a number, so search by string */ |