X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/92128dacf8d5db02379e8f872dc50d31c6aaa55f..b2cc954248dff07883ef749c1c2851dd07e0d400:/uip/scansbr.c diff --git a/uip/scansbr.c b/uip/scansbr.c index 97df2c3a..ce49bee2 100644 --- a/uip/scansbr.c +++ b/uip/scansbr.c @@ -14,8 +14,6 @@ #include #include -#define MAXSCANL 256 /* longest possible scan line */ - /* * Buffer size for content part of header fields. We want this * to be large enough so that we don't do a lot of extra FLDPLUS @@ -35,7 +33,7 @@ static struct comp **used_buf = 0; /* stack for comp that use buffers */ static int dat[5]; /* aux. data for format routine */ -m_getfld_state_t gstate; /* for access by msh */ +static m_getfld_state_t gstate; /* for accessor functions below */ #define DIEWRERR() adios (scnmsg, "write error on") @@ -68,11 +66,13 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg, way the code is now, with callers initializing *scanl to NULL. scanl used to be a global. */ if (! *scanl) { - if (width == 0) { + if (width == -1) { + /* Default: width of the terminal, but at least WIDTH/2. */ if ((width = sc_width ()) < WIDTH/2) width = WIDTH/2; - else if (width > MAXSCANL) - width = MAXSCANL; + } else if (width == 0) { + /* Unlimited width. */ + width = INT_MAX; } dat[3] = slwidth = width; *scanl = charstring_create (width); @@ -134,7 +134,9 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg, if (used_buf == NULL) adios (NULL, "unable to allocate component buffer stack"); used_buf += ncomps+1; *--used_buf = 0; - rlwidth = bodycomp && (width > SBUFSIZ) ? width : SBUFSIZ; + rlwidth = bodycomp && (width > SBUFSIZ) + ? min (width, NMH_BUFSIZ) + : SBUFSIZ; for (i = ncomps; i--; ) *nxtbuf++ = mh_xmalloc(rlwidth); } @@ -371,7 +373,7 @@ mh_fputs(char *s, FILE *stream) return (0); } -/* The following three functions allow access to the global gstate above. */ +/* The following two functions allow access to the global gstate above. */ void scan_finished () { m_getfld_state_destroy (&gstate); @@ -381,8 +383,3 @@ void scan_detect_mbox_style (FILE *f) { m_unknown (&gstate, f); } - -void -scan_reset_m_getfld_state () { - m_getfld_state_reset (&gstate); -}