=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mg/search.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- src/usr.bin/mg/search.c 2005/05/27 07:22:52 1.16 +++ src/usr.bin/mg/search.c 2005/05/27 08:08:18 1.17 @@ -1,4 +1,4 @@ -/* $OpenBSD: search.c,v 1.16 2005/05/27 07:22:52 cloder Exp $ */ +/* $OpenBSD: search.c,v 1.17 2005/05/27 08:08:18 cloder Exp $ */ /* * Search commands. @@ -549,6 +549,44 @@ ewprintf("(1 replacement done)"); else ewprintf("(%d replacements done)", rcnt); + return (TRUE); +} + +/* + * Replace string globally without individual prompting. + */ +/* ARGSUSED */ +int +replstr(int f, int n) +{ + char news[NPAT]; + int s, plen, rcnt = 0; + char *r; + + if ((s = readpattern("Replace string")) != TRUE) + return s; + + r = ereply("Replace string %s with: ", news, NPAT, pat); + if (r == NULL) + return (ABORT); + + plen = strlen(pat); + while (forwsrch() == TRUE) { + update(); + if (lreplace((RSIZE)plen, news, f) == FALSE) + return (FALSE); + + rcnt++; + } + + curwp->w_flag |= WFHARD; + update(); + + if (rcnt == 1) + ewprintf("(1 replacement done)"); + else + ewprintf("(%d replacements done)", rcnt); + return (TRUE); }