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

Diff for /mandoc/man_term.c between version 1.185 and 1.190

version 1.185, 2015/10/06 18:32:19 version 1.190, 2017/02/11 21:49:50
Line 1 
Line 1 
 /*      $Id$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2015 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2010-2015, 2017 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 143  terminal_man(void *arg, const struct roff_man *man)
Line 143  terminal_man(void *arg, const struct roff_man *man)
         struct termp            *p;          struct termp            *p;
         struct roff_node        *n;          struct roff_node        *n;
         struct mtermp            mt;          struct mtermp            mt;
           size_t                   save_defindent;
   
         p = (struct termp *)arg;          p = (struct termp *)arg;
         p->overstep = 0;          p->overstep = 0;
Line 170  terminal_man(void *arg, const struct roff_man *man)
Line 171  terminal_man(void *arg, const struct roff_man *man)
                         n = n->next;                          n = n->next;
                 }                  }
         } else {          } else {
                   save_defindent = p->defindent;
                 if (p->defindent == 0)                  if (p->defindent == 0)
                         p->defindent = 7;                          p->defindent = 7;
                 term_begin(p, print_man_head, print_man_foot, &man->meta);                  term_begin(p, print_man_head, print_man_foot, &man->meta);
Line 177  terminal_man(void *arg, const struct roff_man *man)
Line 179  terminal_man(void *arg, const struct roff_man *man)
                 if (n != NULL)                  if (n != NULL)
                         print_man_nodelist(p, &mt, n, &man->meta);                          print_man_nodelist(p, &mt, n, &man->meta);
                 term_end(p);                  term_end(p);
                   p->defindent = save_defindent;
         }          }
 }  }
   
Line 219  static int
Line 222  static int
 pre_ll(DECL_ARGS)  pre_ll(DECL_ARGS)
 {  {
   
         term_setwidth(p, n->nchild ? n->child->string : NULL);          term_setwidth(p, n->child != NULL ? n->child->string : NULL);
         return 0;          return 0;
 }  }
   
Line 319  pre_alternate(DECL_ARGS)
Line 322  pre_alternate(DECL_ARGS)
                         mt->fl |= MANT_LITERAL;                          mt->fl |= MANT_LITERAL;
                 assert(nn->type == ROFFT_TEXT);                  assert(nn->type == ROFFT_TEXT);
                 term_word(p, nn->string);                  term_word(p, nn->string);
                 if (nn->flags & MAN_EOS)                  if (nn->flags & NODE_EOS)
                         p->flags |= TERMP_SENTENCE;                          p->flags |= TERMP_SENTENCE;
                 if (nn->next)                  if (nn->next)
                         p->flags |= TERMP_NOSPACE;                          p->flags |= TERMP_NOSPACE;
Line 371  pre_ft(DECL_ARGS)
Line 374  pre_ft(DECL_ARGS)
         cp = n->child->string;          cp = n->child->string;
         switch (*cp) {          switch (*cp) {
         case '4':          case '4':
                 /* FALLTHROUGH */  
         case '3':          case '3':
                 /* FALLTHROUGH */  
         case 'B':          case 'B':
                 term_fontrepl(p, TERMFONT_BOLD);                  term_fontrepl(p, TERMFONT_BOLD);
                 break;                  break;
         case '2':          case '2':
                 /* FALLTHROUGH */  
         case 'I':          case 'I':
                 term_fontrepl(p, TERMFONT_UNDER);                  term_fontrepl(p, TERMFONT_UNDER);
                 break;                  break;
Line 386  pre_ft(DECL_ARGS)
Line 386  pre_ft(DECL_ARGS)
                 term_fontlast(p);                  term_fontlast(p);
                 break;                  break;
         case '1':          case '1':
                 /* FALLTHROUGH */  
         case 'C':          case 'C':
                 /* FALLTHROUGH */  
         case 'R':          case 'R':
                 term_fontrepl(p, TERMFONT_NONE);                  term_fontrepl(p, TERMFONT_NONE);
                 break;                  break;
Line 449  pre_sp(DECL_ARGS)
Line 447  pre_sp(DECL_ARGS)
         if ((NULL == n->prev && n->parent)) {          if ((NULL == n->prev && n->parent)) {
                 switch (n->parent->tok) {                  switch (n->parent->tok) {
                 case MAN_SH:                  case MAN_SH:
                         /* FALLTHROUGH */  
                 case MAN_SS:                  case MAN_SS:
                         /* FALLTHROUGH */  
                 case MAN_PP:                  case MAN_PP:
                         /* FALLTHROUGH */  
                 case MAN_LP:                  case MAN_LP:
                         /* FALLTHROUGH */  
                 case MAN_P:                  case MAN_P:
                         /* FALLTHROUGH */  
                         return 0;                          return 0;
                 default:                  default:
                         break;                          break;
Line 687  pre_TP(DECL_ARGS)
Line 680  pre_TP(DECL_ARGS)
         /* Calculate offset. */          /* Calculate offset. */
   
         if ((nn = n->parent->head->child) != NULL &&          if ((nn = n->parent->head->child) != NULL &&
             nn->string != NULL && ! (MAN_LINE & nn->flags) &&              nn->string != NULL && ! (NODE_LINE & nn->flags) &&
             a2roffsu(nn->string, &su, SCALE_EN)) {              a2roffsu(nn->string, &su, SCALE_EN)) {
                 len = term_hspan(p, &su) / 24;                  len = term_hspan(p, &su) / 24;
                 if (len < 0 && (size_t)(-len) > mt->offset)                  if (len < 0 && (size_t)(-len) > mt->offset)
Line 708  pre_TP(DECL_ARGS)
Line 701  pre_TP(DECL_ARGS)
   
                 /* Don't print same-line elements. */                  /* Don't print same-line elements. */
                 nn = n->child;                  nn = n->child;
                 while (NULL != nn && 0 == (MAN_LINE & nn->flags))                  while (NULL != nn && 0 == (NODE_LINE & nn->flags))
                         nn = nn->next;                          nn = nn->next;
   
                 while (NULL != nn) {                  while (NULL != nn) {
Line 829  pre_SH(DECL_ARGS)
Line 822  pre_SH(DECL_ARGS)
   
                 do {                  do {
                         n = n->prev;                          n = n->prev;
                 } while (n != NULL && termacts[n->tok].flags & MAN_NOTEXT);                  } while (n != NULL && n->tok < MAN_MAX &&
                       termacts[n->tok].flags & MAN_NOTEXT);
                 if (n == NULL || (n->tok == MAN_SH && n->body->child == NULL))                  if (n == NULL || (n->tok == MAN_SH && n->body->child == NULL))
                         break;                          break;
   
Line 970  print_man_node(DECL_ARGS)
Line 964  print_man_node(DECL_ARGS)
                 if ('\0' == *n->string) {                  if ('\0' == *n->string) {
                         term_vspace(p);                          term_vspace(p);
                         return;                          return;
                 } else if (' ' == *n->string && MAN_LINE & n->flags)                  } else if (' ' == *n->string && NODE_LINE & n->flags)
                         term_newln(p);                          term_newln(p);
   
                 term_word(p, n->string);                  term_word(p, n->string);
                 goto out;                  goto out;
   
         case ROFFT_EQN:          case ROFFT_EQN:
                 if ( ! (n->flags & MAN_LINE))                  if ( ! (n->flags & NODE_LINE))
                         p->flags |= TERMP_NOSPACE;                          p->flags |= TERMP_NOSPACE;
                 term_eqn(p, n->eqn);                  term_eqn(p, n->eqn);
                 if (n->next != NULL && ! (n->next->flags & MAN_LINE))                  if (n->next != NULL && ! (n->next->flags & NODE_LINE))
                         p->flags |= TERMP_NOSPACE;                          p->flags |= TERMP_NOSPACE;
                 return;                  return;
         case ROFFT_TBL:          case ROFFT_TBL:
Line 1017  out:
Line 1011  out:
          */           */
         if (mt->fl & MANT_LITERAL &&          if (mt->fl & MANT_LITERAL &&
             ! (p->flags & (TERMP_NOBREAK | TERMP_NONEWLINE)) &&              ! (p->flags & (TERMP_NOBREAK | TERMP_NONEWLINE)) &&
             (n->next == NULL || n->next->flags & MAN_LINE)) {              (n->next == NULL || n->next->flags & NODE_LINE)) {
                 rm = p->rmargin;                  rm = p->rmargin;
                 rmax = p->maxrmargin;                  rmax = p->maxrmargin;
                 p->rmargin = p->maxrmargin = TERM_MAXMARGIN;                  p->rmargin = p->maxrmargin = TERM_MAXMARGIN;
Line 1033  out:
Line 1027  out:
                         p->rmargin = rm;                          p->rmargin = rm;
                 p->maxrmargin = rmax;                  p->maxrmargin = rmax;
         }          }
         if (MAN_EOS & n->flags)          if (NODE_EOS & n->flags)
                 p->flags |= TERMP_SENTENCE;                  p->flags |= TERMP_SENTENCE;
 }  }
   

Legend:
Removed from v.1.185  
changed lines
  Added in v.1.190

CVSweb