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

Diff for /mandoc/term.c between version 1.282 and 1.286

version 1.282, 2020/09/02 16:40:36 version 1.286, 2022/04/27 13:41:13
Line 1 
Line 1 
 /* $Id$ */  /* $Id$ */
 /*  /*
    * Copyright (c) 2010-2022 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-2020 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 58  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 589  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;
Line 625  term_word(struct termp *p, const char *word)
Line 628  term_word(struct termp *p, const char *word)
                                 encode(p, "utf8", 4);                                  encode(p, "utf8", 4);
                         continue;                          continue;
                 case ESCAPE_HORIZ:                  case ESCAPE_HORIZ:
                           if (p->flags & TERMP_BACKAFTER) {
                                   p->flags &= ~TERMP_BACKAFTER;
                                   continue;
                           }
                         if (*seq == '|') {                          if (*seq == '|') {
                                 seq++;                                  seq++;
                                 uc = -p->col;                                  uc = -p->col;
Line 633  term_word(struct termp *p, const char *word)
Line 640  term_word(struct termp *p, const char *word)
                         if (a2roffsu(seq, &su, SCALE_EM) == NULL)                          if (a2roffsu(seq, &su, SCALE_EM) == NULL)
                                 continue;                                  continue;
                         uc += term_hen(p, &su);                          uc += term_hen(p, &su);
                         if (uc > 0)                          if (uc >= 0) {
                                 while (uc-- > 0)                                  while (uc > 0) {
                                         bufferc(p, ASCII_NBRSP);                                          uc -= term_len(p, 1);
                         else if (p->col > (size_t)(-uc))                                          if (p->flags & TERMP_BACKBEFORE)
                                                   p->flags &= ~TERMP_BACKBEFORE;
                                           else
                                                   bufferc(p, ASCII_NBRSP);
                                   }
                                   continue;
                           }
                           if (p->flags & TERMP_BACKBEFORE) {
                                   p->flags &= ~TERMP_BACKBEFORE;
                                   assert(p->col > 0);
                                   p->col--;
                           }
                           if (p->col >= (size_t)(-uc)) {
                                 p->col += uc;                                  p->col += uc;
                         else {                          } else {
                                 uc += p->col;                                  uc += p->col;
                                 p->col = 0;                                  p->col = 0;
                                 if (p->tcol->offset > (size_t)(-uc)) {                                  if (p->tcol->offset > (size_t)(-uc)) {

Legend:
Removed from v.1.282  
changed lines
  Added in v.1.286

CVSweb