X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/3c060a503d733e7c119fc7bde9b484cb036e4393..ec173fd2c:/uip/mhlsbr.c?ds=sidebyside diff --git a/uip/mhlsbr.c b/uip/mhlsbr.c index 8d532e35..86a1f41d 100644 --- a/uip/mhlsbr.c +++ b/uip/mhlsbr.c @@ -6,6 +6,8 @@ */ #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" @@ -1076,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; @@ -1835,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: /* @@ -1860,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]);