[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.187 and 1.192

version 1.187, 2016/01/08 17:48:09 version 1.192, 2017/04/24 23:06:18
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 95  static void    post_SS(DECL_ARGS);
Line 95  static void    post_SS(DECL_ARGS);
 static  void              post_TP(DECL_ARGS);  static  void              post_TP(DECL_ARGS);
 static  void              post_UR(DECL_ARGS);  static  void              post_UR(DECL_ARGS);
   
 static  const struct termact termacts[MAN_MAX] = {  static  const struct termact __termacts[MAN_MAX - MAN_TH] = {
         { pre_sp, NULL, MAN_NOTEXT }, /* br */  
         { NULL, NULL, 0 }, /* TH */          { NULL, NULL, 0 }, /* TH */
         { pre_SH, post_SH, 0 }, /* SH */          { pre_SH, post_SH, 0 }, /* SH */
         { pre_SS, post_SS, 0 }, /* SS */          { pre_SS, post_SS, 0 }, /* SS */
Line 117  static const struct termact termacts[MAN_MAX] = {
Line 116  static const struct termact termacts[MAN_MAX] = {
         { pre_I, NULL, 0 }, /* I */          { pre_I, NULL, 0 }, /* I */
         { pre_alternate, NULL, 0 }, /* IR */          { pre_alternate, NULL, 0 }, /* IR */
         { pre_alternate, NULL, 0 }, /* RI */          { pre_alternate, NULL, 0 }, /* RI */
           { pre_sp, NULL, MAN_NOTEXT }, /* br */
         { pre_sp, NULL, MAN_NOTEXT }, /* sp */          { pre_sp, NULL, MAN_NOTEXT }, /* sp */
         { pre_literal, NULL, 0 }, /* nf */          { pre_literal, NULL, 0 }, /* nf */
         { pre_literal, NULL, 0 }, /* fi */          { pre_literal, NULL, 0 }, /* fi */
Line 135  static const struct termact termacts[MAN_MAX] = {
Line 135  static const struct termact termacts[MAN_MAX] = {
         { NULL, NULL, 0 }, /* UE */          { NULL, NULL, 0 }, /* UE */
         { pre_ll, NULL, MAN_NOTEXT }, /* ll */          { pre_ll, NULL, MAN_NOTEXT }, /* ll */
 };  };
   static  const struct termact *termacts = __termacts - MAN_TH;
   
   
 void  void
Line 143  terminal_man(void *arg, const struct roff_man *man)
Line 144  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 172  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 180  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 319  pre_alternate(DECL_ARGS)
Line 323  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 677  pre_TP(DECL_ARGS)
Line 681  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 698  pre_TP(DECL_ARGS)
Line 702  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 819  pre_SH(DECL_ARGS)
Line 823  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 != TOKEN_NONE &&
                       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 960  print_man_node(DECL_ARGS)
Line 965  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 1007  out:
Line 1012  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 1023  out:
Line 1028  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.187  
changed lines
  Added in v.1.192

CVSweb