[BACK]Return to term.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/term.c between version 1.111 and 1.114

version 1.111, 2009/10/26 07:18:23 version 1.114, 2009/10/27 08:05:39
Line 19 
Line 19 
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
   #include <time.h>
   
 #include "chars.h"  #include "chars.h"
 #include "out.h"  #include "out.h"
Line 119  term_alloc(enum termenc enc)
Line 120  term_alloc(enum termenc enc)
  *  If TERMP_NOBREAK is specified and the line overruns the right   *  If TERMP_NOBREAK is specified and the line overruns the right
  *  margin, it will break and pad-right to the right margin after   *  margin, it will break and pad-right to the right margin after
  *  writing.  If maxrmargin is violated, it will break and continue   *  writing.  If maxrmargin is violated, it will break and continue
  *  writing from the right-margin, which will lead to the above   *  writing from the right-margin, which will lead to the above scenario
  *  scenario upon exit.   *  upon exit.  Otherwise, the line will break at the right margin.
  *  
  *  Otherwise, the line will break at the right margin.  Extremely long  
  *  lines will cause the system to emit a warning (TODO: hyphenate, if  
  *  possible).  
  */   */
 void  void
 term_flushln(struct termp *p)  term_flushln(struct termp *p)
 {  {
         int              i, j;          int              i;     /* current input position in p->buf */
         size_t           vbl, vsz, vis, maxvis, mmax, bp;          size_t           vis;   /* current visual position on output */
           size_t           vbl;   /* number of blanks to prepend to output */
           size_t           vsz;   /* visual characters to write to output */
           size_t           bp;    /* visual right border position */
           int              j;     /* temporary loop index */
           size_t           maxvis, mmax;
         static int       overstep = 0;          static int       overstep = 0;
   
         /*          /*
Line 141  term_flushln(struct termp *p)
Line 143  term_flushln(struct termp *p)
          */           */
   
         assert(p->offset < p->rmargin);          assert(p->offset < p->rmargin);
         assert((int)(p->rmargin - p->offset) - overstep > 0);  
   
         maxvis = /* LINTED */          maxvis = (int)(p->rmargin - p->offset) - overstep < 0 ?
                 p->rmargin - p->offset - overstep;                          0 : p->rmargin - p->offset - overstep;
         mmax = /* LINTED */          mmax = (int)(p->maxrmargin - p->offset) - overstep < 0 ?
                 p->maxrmargin - p->offset - overstep;                          0 : p->maxrmargin - p->offset - overstep;
   
         bp = TERMP_NOBREAK & p->flags ? mmax : maxvis;          bp = TERMP_NOBREAK & p->flags ? mmax : maxvis;
         vis = 0;          vis = 0;
Line 204  term_flushln(struct termp *p)
Line 205  term_flushln(struct termp *p)
                                 vis = 0;                                  vis = 0;
                         }                          }
                         /* Remove the overstep width. */                          /* Remove the overstep width. */
                         bp += overstep;                          bp += (int)/* LINTED */
                                   overstep;
                         overstep = 0;                          overstep = 0;
                 } else {                  } else {
                         for (j = 0; j < (int)vbl; j++)                          for (j = 0; j < (int)vbl; j++)

Legend:
Removed from v.1.111  
changed lines
  Added in v.1.114

CVSweb