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

Diff for /mandoc/term.c between version 1.280 and 1.284

version 1.280, 2019/01/15 12:16:18 version 1.284, 2021/10/04 18:56:31
Line 1 
Line 1 
 /*      $Id$ */  /* $Id$ */
 /*  /*
    * Copyright (c) 2010-2021 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2019 Ingo Schwarze <schwarze@openbsd.org>  
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
Line 38  static void   bufferc(struct termp *, char);
Line 38  static void   bufferc(struct termp *, char);
 static  void             encode(struct termp *, const char *, size_t);  static  void             encode(struct termp *, const char *, size_t);
 static  void             encode1(struct termp *, int);  static  void             encode1(struct termp *, int);
 static  void             endline(struct termp *);  static  void             endline(struct termp *);
 static  void             term_field(struct termp *, size_t, size_t,  static  void             term_field(struct termp *, size_t, size_t);
                                 size_t, size_t);  
 static  void             term_fill(struct termp *, size_t *, size_t *,  static  void             term_fill(struct termp *, size_t *, size_t *,
                                 size_t);                                  size_t);
   
Line 59  term_setcol(struct termp *p, size_t maxtcol)
Line 58  term_setcol(struct termp *p, size_t maxtcol)
 void  void
 term_free(struct termp *p)  term_free(struct termp *p)
 {  {
           term_tab_free();
         for (p->tcol = p->tcols; p->tcol < p->tcols + p->maxtcol; p->tcol++)          for (p->tcol = p->tcols; p->tcol < p->tcols + p->maxtcol; p->tcol++)
                 free(p->tcol->buf);                  free(p->tcol->buf);
         free(p->tcols);          free(p->tcols);
Line 127  term_flushln(struct termp *p)
Line 127  term_flushln(struct termp *p)
                  * and with the BRNEVER flag, never break it at all.                   * and with the BRNEVER flag, never break it at all.
                  */                   */
   
                 vtarget = p->flags & TERMP_BRNEVER ? SIZE_MAX :                  vtarget = (p->flags & TERMP_NOBREAK) == 0 ? vfield :
                     (p->flags & TERMP_NOBREAK) == 0 ? vfield :  
                     p->maxrmargin > p->viscol + vbl ?                      p->maxrmargin > p->viscol + vbl ?
                     p->maxrmargin - p->viscol - vbl : 0;                      p->maxrmargin - p->viscol - vbl : 0;
   
Line 137  term_flushln(struct termp *p)
Line 136  term_flushln(struct termp *p)
                  * If there is whitespace only, print nothing.                   * If there is whitespace only, print nothing.
                  */                   */
   
                 term_fill(p, &nbr, &vbr, vtarget);                  term_fill(p, &nbr, &vbr,
                       p->flags & TERMP_BRNEVER ? SIZE_MAX : vtarget);
                 if (nbr == 0)                  if (nbr == 0)
                         break;                          break;
   
Line 156  term_flushln(struct termp *p)
Line 156  term_flushln(struct termp *p)
   
                 /* Finally, print the field content. */                  /* Finally, print the field content. */
   
                 term_field(p, vbl, nbr, vbr, vtarget);                  term_field(p, vbl, nbr);
   
                 /*                  /*
                  * If there is no text left in the field, exit the loop.                   * If there is no text left in the field, exit the loop.
Line 281  term_fill(struct termp *p, size_t *nbr, size_t *vbr, s
Line 281  term_fill(struct termp *p, size_t *nbr, size_t *vbr, s
                         case ASCII_BREAK:                          case ASCII_BREAK:
                                 vn = vis;                                  vn = vis;
                                 break;                                  break;
                           default:
                                   abort();
                         }                          }
                         /* Can break at the end of a word. */                          /* Can break at the end of a word. */
                         if (breakline || vn > vtarget)                          if (breakline || vn > vtarget)
Line 343  term_fill(struct termp *p, size_t *nbr, size_t *vbr, s
Line 345  term_fill(struct termp *p, size_t *nbr, size_t *vbr, s
 /*  /*
  * Print the contents of one field   * Print the contents of one field
  * with an indentation of        vbl      visual columns,   * with an indentation of        vbl      visual columns,
  * an input string length of     nbr      characters,   * and an input string length of nbr      characters.
  * an output width of            vbr      visual columns,  
  * and a desired field width of  vtarget  visual columns.  
  */   */
 static void  static void
 term_field(struct termp *p, size_t vbl, size_t nbr, size_t vbr, size_t vtarget)  term_field(struct termp *p, size_t vbl, size_t nbr)
 {  {
         size_t   ic;    /* Character position in the input buffer. */          size_t   ic;    /* Character position in the input buffer. */
         size_t   vis;   /* Visual position of the current character. */          size_t   vis;   /* Visual position of the current character. */
Line 590  term_word(struct termp *p, const char *word)
Line 590  term_word(struct termp *p, const char *word)
                         uc = *seq;                          uc = *seq;
                         break;                          break;
                 case ESCAPE_FONTBOLD:                  case ESCAPE_FONTBOLD:
                   case ESCAPE_FONTCB:
                         term_fontrepl(p, TERMFONT_BOLD);                          term_fontrepl(p, TERMFONT_BOLD);
                         continue;                          continue;
                 case ESCAPE_FONTITALIC:                  case ESCAPE_FONTITALIC:
                   case ESCAPE_FONTCI:
                         term_fontrepl(p, TERMFONT_UNDER);                          term_fontrepl(p, TERMFONT_UNDER);
                         continue;                          continue;
                 case ESCAPE_FONTBI:                  case ESCAPE_FONTBI:
                         term_fontrepl(p, TERMFONT_BI);                          term_fontrepl(p, TERMFONT_BI);
                         continue;                          continue;
                 case ESCAPE_FONT:                  case ESCAPE_FONT:
                 case ESCAPE_FONTCW:                  case ESCAPE_FONTCR:
                 case ESCAPE_FONTROMAN:                  case ESCAPE_FONTROMAN:
                         term_fontrepl(p, TERMFONT_NONE);                          term_fontrepl(p, TERMFONT_NONE);
                         continue;                          continue;

Legend:
Removed from v.1.280  
changed lines
  Added in v.1.284

CVSweb