It turns out that as part of POSIXification we got rid of checks for
[mmh] / uip / scansbr.c
index ae347e8..7eef85f 100644 (file)
@@ -56,14 +56,9 @@ char *scanl = 0;                     /* text of most recent scanline    */
 /*
  * prototypes
  */
-int sc_width (void);                   /* from termsbr.c */
 static int mh_fputs(char *, FILE *);
 
-#ifdef MULTIBYTE_SUPPORT
 #define SCAN_CHARWIDTH MB_CUR_MAX
-#else
-#define SCAN_CHARWIDTH 1
-#endif
 
 int
 scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
@@ -208,6 +203,15 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
 
            case BODY: 
                compnum = -1;
+               /*
+                * A slight hack ... if we have less than rlwidth characters
+                * in the buffer, call m_getfld again.
+                */
+
+               if ((i = strlen(tmpbuf)) < rlwidth) {
+                   state = m_getfld (state, name, tmpbuf + i,
+                                     rlwidth - i, inb);
+               }
                if (! outnum) {
                    state = FILEEOF; /* stop now if scan cmd */
                    goto finished;