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

Diff for /mandoc/mdoc_term.c between version 1.244 and 1.245

version 1.244, 2012/11/16 17:16:55 version 1.245, 2012/11/17 00:26:33
Line 41  struct termpair {
Line 41  struct termpair {
   
 #define DECL_ARGS struct termp *p, \  #define DECL_ARGS struct termp *p, \
                   struct termpair *pair, \                    struct termpair *pair, \
                   const struct mdoc_meta *m, \                    const struct mdoc_meta *meta, \
                   struct mdoc_node *n                    struct mdoc_node *n
   
 struct  termact {  struct  termact {
Line 251  void
Line 251  void
 terminal_mdoc(void *arg, const struct mdoc *mdoc)  terminal_mdoc(void *arg, const struct mdoc *mdoc)
 {  {
         const struct mdoc_node  *n;          const struct mdoc_node  *n;
         const struct mdoc_meta  *m;          const struct mdoc_meta  *meta;
         struct termp            *p;          struct termp            *p;
   
         p = (struct termp *)arg;          p = (struct termp *)arg;
Line 267  terminal_mdoc(void *arg, const struct mdoc *mdoc)
Line 267  terminal_mdoc(void *arg, const struct mdoc *mdoc)
                 p->symtab = mchars_alloc();                  p->symtab = mchars_alloc();
   
         n = mdoc_node(mdoc);          n = mdoc_node(mdoc);
         m = mdoc_meta(mdoc);          meta = mdoc_meta(mdoc);
   
         term_begin(p, print_mdoc_head, print_mdoc_foot, m);          term_begin(p, print_mdoc_head, print_mdoc_foot, meta);
   
         if (n->child)          if (n->child)
                 print_mdoc_nodelist(p, NULL, m, n->child);                  print_mdoc_nodelist(p, NULL, meta, n->child);
   
         term_end(p);          term_end(p);
 }  }
Line 282  static void
Line 282  static void
 print_mdoc_nodelist(DECL_ARGS)  print_mdoc_nodelist(DECL_ARGS)
 {  {
   
         print_mdoc_node(p, pair, m, n);          print_mdoc_node(p, pair, meta, n);
         if (n->next)          if (n->next)
                 print_mdoc_nodelist(p, pair, m, n->next);                  print_mdoc_nodelist(p, pair, meta, n->next);
 }  }
   
   
Line 358  print_mdoc_node(DECL_ARGS)
Line 358  print_mdoc_node(DECL_ARGS)
         default:          default:
                 if (termacts[n->tok].pre && ENDBODY_NOT == n->end)                  if (termacts[n->tok].pre && ENDBODY_NOT == n->end)
                         chld = (*termacts[n->tok].pre)                          chld = (*termacts[n->tok].pre)
                                 (p, &npair, m, n);                                  (p, &npair, meta, n);
                 break;                  break;
         }          }
   
         if (chld && n->child)          if (chld && n->child)
                 print_mdoc_nodelist(p, &npair, m, n->child);                  print_mdoc_nodelist(p, &npair, meta, n->child);
   
         term_fontpopq(p,          term_fontpopq(p,
             (ENDBODY_NOT == n->end ? n : n->pending)->prev_font);              (ENDBODY_NOT == n->end ? n : n->pending)->prev_font);
Line 378  print_mdoc_node(DECL_ARGS)
Line 378  print_mdoc_node(DECL_ARGS)
         default:          default:
                 if ( ! termacts[n->tok].post || MDOC_ENDED & n->flags)                  if ( ! termacts[n->tok].post || MDOC_ENDED & n->flags)
                         break;                          break;
                 (void)(*termacts[n->tok].post)(p, &npair, m, n);                  (void)(*termacts[n->tok].post)(p, &npair, meta, n);
   
                 /*                  /*
                  * Explicit end tokens not only call the post                   * Explicit end tokens not only call the post
Line 409  print_mdoc_node(DECL_ARGS)
Line 409  print_mdoc_node(DECL_ARGS)
 static void  static void
 print_mdoc_foot(struct termp *p, const void *arg)  print_mdoc_foot(struct termp *p, const void *arg)
 {  {
         const struct mdoc_meta *m;          const struct mdoc_meta *meta;
   
         m = (const struct mdoc_meta *)arg;          meta = (const struct mdoc_meta *)arg;
   
         term_fontrepl(p, TERMFONT_NONE);          term_fontrepl(p, TERMFONT_NONE);
   
Line 427  print_mdoc_foot(struct termp *p, const void *arg)
Line 427  print_mdoc_foot(struct termp *p, const void *arg)
   
         p->offset = 0;          p->offset = 0;
         p->rmargin = (p->maxrmargin -          p->rmargin = (p->maxrmargin -
                         term_strlen(p, m->date) + term_len(p, 1)) / 2;                          term_strlen(p, meta->date) + term_len(p, 1)) / 2;
         p->flags |= TERMP_NOSPACE | TERMP_NOBREAK;          p->flags |= TERMP_NOSPACE | TERMP_NOBREAK;
   
         term_word(p, m->os);          term_word(p, meta->os);
         term_flushln(p);          term_flushln(p);
   
         p->offset = p->rmargin;          p->offset = p->rmargin;
         p->rmargin = p->maxrmargin - term_strlen(p, m->os);          p->rmargin = p->maxrmargin - term_strlen(p, meta->os);
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
   
         term_word(p, m->date);          term_word(p, meta->date);
         term_flushln(p);          term_flushln(p);
   
         p->offset = p->rmargin;          p->offset = p->rmargin;
Line 445  print_mdoc_foot(struct termp *p, const void *arg)
Line 445  print_mdoc_foot(struct termp *p, const void *arg)
         p->flags &= ~TERMP_NOBREAK;          p->flags &= ~TERMP_NOBREAK;
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
   
         term_word(p, m->os);          term_word(p, meta->os);
         term_flushln(p);          term_flushln(p);
   
         p->offset = 0;          p->offset = 0;
Line 459  print_mdoc_head(struct termp *p, const void *arg)
Line 459  print_mdoc_head(struct termp *p, const void *arg)
 {  {
         char            buf[BUFSIZ], title[BUFSIZ];          char            buf[BUFSIZ], title[BUFSIZ];
         size_t          buflen, titlen;          size_t          buflen, titlen;
         const struct mdoc_meta *m;          const struct mdoc_meta *meta;
   
         m = (const struct mdoc_meta *)arg;          meta = (const struct mdoc_meta *)arg;
   
         /*          /*
          * The header is strange.  It has three components, which are           * The header is strange.  It has three components, which are
Line 479  print_mdoc_head(struct termp *p, const void *arg)
Line 479  print_mdoc_head(struct termp *p, const void *arg)
         p->offset = 0;          p->offset = 0;
         p->rmargin = p->maxrmargin;          p->rmargin = p->maxrmargin;
   
         assert(m->vol);          assert(meta->vol);
         strlcpy(buf, m->vol, BUFSIZ);          strlcpy(buf, meta->vol, BUFSIZ);
         buflen = term_strlen(p, buf);          buflen = term_strlen(p, buf);
   
         if (m->arch) {          if (meta->arch) {
                 strlcat(buf, " (", BUFSIZ);                  strlcat(buf, " (", BUFSIZ);
                 strlcat(buf, m->arch, BUFSIZ);                  strlcat(buf, meta->arch, BUFSIZ);
                 strlcat(buf, ")", BUFSIZ);                  strlcat(buf, ")", BUFSIZ);
         }          }
   
         snprintf(title, BUFSIZ, "%s(%s)", m->title, m->msec);          snprintf(title, BUFSIZ, "%s(%s)", meta->title, meta->msec);
         titlen = term_strlen(p, title);          titlen = term_strlen(p, title);
   
         p->flags |= TERMP_NOBREAK | TERMP_NOSPACE;          p->flags |= TERMP_NOBREAK | TERMP_NOSPACE;
Line 1011  termp_nm_pre(DECL_ARGS)
Line 1011  termp_nm_pre(DECL_ARGS)
                         return(0);                          return(0);
                 p->flags |= TERMP_NOSPACE;                  p->flags |= TERMP_NOSPACE;
                 p->offset += term_len(p, 1) +                  p->offset += term_len(p, 1) +
                     (NULL == n->prev->child ? term_strlen(p, m->name) :                      (NULL == n->prev->child ?
                        term_strlen(p, meta->name) :
                      MDOC_TEXT == n->prev->child->type ?                       MDOC_TEXT == n->prev->child->type ?
                         term_strlen(p, n->prev->child->string) :                       term_strlen(p, n->prev->child->string) :
                      term_len(p, 5));                       term_len(p, 5));
                 return(1);                  return(1);
         }          }
   
         if (NULL == n->child && NULL == m->name)          if (NULL == n->child && NULL == meta->name)
                 return(0);                  return(0);
   
         if (MDOC_HEAD == n->type)          if (MDOC_HEAD == n->type)
Line 1028  termp_nm_pre(DECL_ARGS)
Line 1029  termp_nm_pre(DECL_ARGS)
                 p->flags |= TERMP_NOSPACE | TERMP_NOBREAK;                  p->flags |= TERMP_NOSPACE | TERMP_NOBREAK;
                 p->rmargin = p->offset + term_len(p, 1);                  p->rmargin = p->offset + term_len(p, 1);
                 if (NULL == n->child) {                  if (NULL == n->child) {
                         p->rmargin += term_strlen(p, m->name);                          p->rmargin += term_strlen(p, meta->name);
                 } else if (MDOC_TEXT == n->child->type) {                  } else if (MDOC_TEXT == n->child->type) {
                         p->rmargin += term_strlen(p, n->child->string);                          p->rmargin += term_strlen(p, n->child->string);
                         if (n->child->next)                          if (n->child->next)
Line 1041  termp_nm_pre(DECL_ARGS)
Line 1042  termp_nm_pre(DECL_ARGS)
   
         term_fontpush(p, TERMFONT_BOLD);          term_fontpush(p, TERMFONT_BOLD);
         if (NULL == n->child)          if (NULL == n->child)
                 term_word(p, m->name);                  term_word(p, meta->name);
         return(1);          return(1);
 }  }
   
Line 1379  termp_vt_pre(DECL_ARGS)
Line 1380  termp_vt_pre(DECL_ARGS)
   
         if (MDOC_ELEM == n->type) {          if (MDOC_ELEM == n->type) {
                 synopsis_pre(p, n);                  synopsis_pre(p, n);
                 return(termp_under_pre(p, pair, m, n));                  return(termp_under_pre(p, pair, meta, n));
         } else if (MDOC_BLOCK == n->type) {          } else if (MDOC_BLOCK == n->type) {
                 synopsis_pre(p, n);                  synopsis_pre(p, n);
                 return(1);                  return(1);
         } else if (MDOC_HEAD == n->type)          } else if (MDOC_HEAD == n->type)
                 return(0);                  return(0);
   
         return(termp_under_pre(p, pair, m, n));          return(termp_under_pre(p, pair, meta, n));
 }  }
   
   
Line 1406  termp_fd_pre(DECL_ARGS)
Line 1407  termp_fd_pre(DECL_ARGS)
 {  {
   
         synopsis_pre(p, n);          synopsis_pre(p, n);
         return(termp_bold_pre(p, pair, m, n));          return(termp_bold_pre(p, pair, meta, n));
 }  }
   
   
Line 1638  termp_bd_pre(DECL_ARGS)
Line 1639  termp_bd_pre(DECL_ARGS)
         p->rmargin = p->maxrmargin = TERM_MAXMARGIN;          p->rmargin = p->maxrmargin = TERM_MAXMARGIN;
   
         for (nn = n->child; nn; nn = nn->next) {          for (nn = n->child; nn; nn = nn->next) {
                 print_mdoc_node(p, pair, m, nn);                  print_mdoc_node(p, pair, meta, nn);
                 /*                  /*
                  * If the printed node flushes its own line, then we                   * If the printed node flushes its own line, then we
                  * needn't do it here as well.  This is hacky, but the                   * needn't do it here as well.  This is hacky, but the
Line 2228  termp__t_post(DECL_ARGS)
Line 2229  termp__t_post(DECL_ARGS)
          */           */
         if (n->parent && MDOC_Rs == n->parent->tok &&          if (n->parent && MDOC_Rs == n->parent->tok &&
                         n->parent->norm->Rs.quote_T)                          n->parent->norm->Rs.quote_T)
                 termp_quote_post(p, pair, m, n);                  termp_quote_post(p, pair, meta, n);
   
         termp____post(p, pair, m, n);          termp____post(p, pair, meta, n);
 }  }
   
 /* ARGSUSED */  /* ARGSUSED */
Line 2244  termp__t_pre(DECL_ARGS)
Line 2245  termp__t_pre(DECL_ARGS)
          */           */
         if (n->parent && MDOC_Rs == n->parent->tok &&          if (n->parent && MDOC_Rs == n->parent->tok &&
                         n->parent->norm->Rs.quote_T)                          n->parent->norm->Rs.quote_T)
                 return(termp_quote_pre(p, pair, m, n));                  return(termp_quote_pre(p, pair, meta, n));
   
         term_fontpush(p, TERMFONT_UNDER);          term_fontpush(p, TERMFONT_UNDER);
         return(1);          return(1);

Legend:
Removed from v.1.244  
changed lines
  Added in v.1.245

CVSweb