X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/c66b47937d9e790256fa99815557935d6561b309..da4e8725cdfeb62527f9b900f3a21afc88e89e3a:/uip/mhlsbr.c diff --git a/uip/mhlsbr.c b/uip/mhlsbr.c index cfd80748..86a1f41d 100644 --- a/uip/mhlsbr.c +++ b/uip/mhlsbr.c @@ -6,6 +6,10 @@ */ #include "h/mh.h" +#include "sbr/fmt_new.h" +#include "mhlsbr.h" +#include "sbr/m_getfld.h" +#include "sbr/getarguments.h" #include "sbr/concat.h" #include "sbr/smatch.h" #include "sbr/r1bindex.h" @@ -1074,8 +1078,9 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec) formatproc != NULL) { filterbody(c1, buf, sizeof(buf), state, gstate); } else { - holder.c_text = mh_xmalloc (sizeof(buf)); - strncpy (holder.c_text, buf, sizeof(buf)); + bufsz = sizeof buf; + holder.c_text = mh_xmalloc(bufsz); + strncpy(holder.c_text, buf, bufsz); while (state == BODY) { putcomp (c1, &holder, BODYCOMP); bufsz = sizeof buf; @@ -1833,7 +1838,7 @@ filterbody (struct mcomp *c1, char *buf, int bufsz, int state, switch (filterpid = fork()) { char **args, *program; struct arglist *a; - int i, dat[5], s, argp; + int i, dat[5], argp; case 0: /* @@ -1858,14 +1863,9 @@ filterbody (struct mcomp *c1, char *buf, int bufsz, int state, fmt_scan(a->a_fmt, scanl, BUFSIZ, dat, NULL); args[i] = charstring_buffer_copy (scanl); charstring_free (scanl); - /* - * fmt_scan likes to put a trailing newline at the end of the - * format string. If we have one, get rid of it. - */ - s = strlen(args[i]); - if (args[i][s - 1] == '\n') - args[i][s - 1] = '\0'; - + /* Trim a trailing linefeed that fmt_scan() likes to put at + * the end of the format string. */ + trim_suffix_c(args[i], '\n'); if (mhldebug) fprintf(stderr, "filterarg: fmt=\"%s\", output=\"%s\"\n", a->a_nfs, args[i]);