X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/eb9d95f038fd0268a821ab332df24ce2592b7482..1c570cbefde061bf4aee1d0ab99bebb9fab40846:/uip/replsbr.c diff --git a/uip/replsbr.c b/uip/replsbr.c index 25049af1..a7a214bf 100644 --- a/uip/replsbr.c +++ b/uip/replsbr.c @@ -57,6 +57,8 @@ static char *addrcomps[] = { */ static int insert (struct mailname *); static void replfilter (FILE *, FILE *, char *, int); +static char *replformataddr(char *, char *); +static char *replconcataddr(char *, char *); void @@ -69,10 +71,10 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen, struct format *fmt; register char **ap; int char_read = 0, format_len, mask; - char name[NAMESZ], *scanl; - unsigned char *cp; + char name[NAMESZ], *scanl, *cp; static int dat[5]; /* aux. data for format routine */ m_getfld_state_t gstate = 0; + struct fmt_callbacks cb; FILE *out; NMH_UNUSED (msg); @@ -187,7 +189,7 @@ finished: register char *sp = cp; for (;;) { - while (isspace(*cp)) + while (isspace((unsigned char) *cp)) cp++; if(uprf(cp, "re:")) cp += 3; @@ -208,7 +210,10 @@ finished: dat[2] = 0; dat[3] = outputlinelen; dat[4] = 0; - fmt_scan (fmt, scanl, i + 1, i, dat); + memset(&cb, 0, sizeof(cb)); + cb.formataddr = replformataddr; + cb.concataddr = replconcataddr; + fmt_scan (fmt, scanl, i + 1, i, dat, &cb); fputs (scanl, out); if (badaddrs) { fputs ("\nrepl: bad addresses:\n", out); @@ -276,8 +281,8 @@ static unsigned int bufsiz=0; /* current size of buf */ * don't call "getcpy") but still place no upper limit on the * length of the result string. */ -char * -formataddr (char *orig, char *str) +static char * +replformataddr (char *orig, char *str) { register int len; char baddr[BUFSIZ], error[BUFSIZ]; @@ -352,19 +357,19 @@ formataddr (char *orig, char *str) * like formataddr, except that it does NOT suppress duplicate addresses * between calls. * - * As an implementation detail: I thought about splitting out formataddr() + * As an implementation detail: I thought about splitting out replformataddr() * into the generic part and duplicate-suppressing part, but the call to * insert() was buried deep within a couple of loops and I didn't see a * way to do it easily. So instead we simply set a special flag to stop - * the duplicate check and call formataddr(). + * the duplicate check and call replformataddr(). */ -char * -concataddr(char *orig, char *str) +static char * +replconcataddr(char *orig, char *str) { char *cp; nodupcheck = 1; - cp = formataddr(orig, str); + cp = replformataddr(orig, str); nodupcheck = 0; return cp; }