summaryrefslogtreecommitdiff
path: root/history.c
diff options
context:
space:
mode:
authorToby Goodwin <tjg@star.le.ac.uk>2002-05-22 14:25:10 +0100
committerToby Goodwin <toby@paccrat.org>2015-05-16 21:22:10 +0100
commit2e67f638ea031ce0138891b6356806b463f5e9af (patch)
treee44106cf9680da9e45153b282a4d3603252ede99 /history.c
parente354cf4fd756584239e7778217ee8860009e6728 (diff)
candidate: rc-1.6c7
Diffstat (limited to 'history.c')
-rw-r--r--history.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/history.c b/history.c
index 629751d..2993a69 100644
--- a/history.c
+++ b/history.c
@@ -26,6 +26,7 @@ static const char id[] = "$Release: @(#)" PACKAGE " " VERSION " " RELDATE " $";
static struct {
char *old, *new;
+ int reps; /* no. of repetitions. i.e. 1 means sub twice. */
} *replace;
static char **search, *progname, *history;
@@ -296,8 +297,12 @@ int main(int argc, char **argv) {
search[nsearch++] = argv[i];
else {
*(char *)s = '\0'; /* do we confuse ps too much? */
+ replace[nreplace].reps = 0;
+ while(*(++s) == ':') {
+ replace[nreplace].reps++;
+ }
replace[nreplace].old = argv[i];
- replace[nreplace].new = s + 1;
+ replace[nreplace].new = s;
nreplace++;
}
@@ -312,8 +317,11 @@ next: s = getcommand();
for (i = 0; i < nreplace; i++)
if (!isin(s, replace[i].old))
goto next;
- else
- s = sub(s, replace[i].old, replace[i].new);
+ else {
+ int j;
+ for (j = 0; j <= replace[i].reps; j++)
+ s = sub(s, replace[i].old, replace[i].new);
+ }
if (editit) {
s = edit(s);
if (s == NULL)