[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.40 and 1.48

version 1.40, 2009/07/14 15:49:44 version 1.48, 2009/07/20 15:05:34
Line 130  static int   termp_ar_pre(DECL_ARGS);
Line 130  static int   termp_ar_pre(DECL_ARGS);
 static  int       termp_bd_pre(DECL_ARGS);  static  int       termp_bd_pre(DECL_ARGS);
 static  int       termp_bf_pre(DECL_ARGS);  static  int       termp_bf_pre(DECL_ARGS);
 static  int       termp_bq_pre(DECL_ARGS);  static  int       termp_bq_pre(DECL_ARGS);
   static  int       termp_br_pre(DECL_ARGS);
 static  int       termp_brq_pre(DECL_ARGS);  static  int       termp_brq_pre(DECL_ARGS);
 static  int       termp_bt_pre(DECL_ARGS);  static  int       termp_bt_pre(DECL_ARGS);
 static  int       termp_cd_pre(DECL_ARGS);  static  int       termp_cd_pre(DECL_ARGS);
Line 163  static int   termp_rs_pre(DECL_ARGS);
Line 164  static int   termp_rs_pre(DECL_ARGS);
 static  int       termp_rv_pre(DECL_ARGS);  static  int       termp_rv_pre(DECL_ARGS);
 static  int       termp_sh_pre(DECL_ARGS);  static  int       termp_sh_pre(DECL_ARGS);
 static  int       termp_sm_pre(DECL_ARGS);  static  int       termp_sm_pre(DECL_ARGS);
   static  int       termp_sp_pre(DECL_ARGS);
 static  int       termp_sq_pre(DECL_ARGS);  static  int       termp_sq_pre(DECL_ARGS);
 static  int       termp_ss_pre(DECL_ARGS);  static  int       termp_ss_pre(DECL_ARGS);
 static  int       termp_sx_pre(DECL_ARGS);  static  int       termp_sx_pre(DECL_ARGS);
Line 292  static const struct termact termacts[MDOC_MAX] = {
Line 294  static const struct termact termacts[MDOC_MAX] = {
         { NULL, NULL }, /* En */          { NULL, NULL }, /* En */
         { termp_xx_pre, NULL }, /* Dx */          { termp_xx_pre, NULL }, /* Dx */
         { NULL, NULL }, /* %Q */          { NULL, NULL }, /* %Q */
           { termp_br_pre, NULL }, /* br */
           { termp_sp_pre, NULL }, /* sp */
 };  };
   
 #ifdef __linux__  #ifdef __linux__
Line 360  print_node(DECL_ARGS)
Line 364  print_node(DECL_ARGS)
         npair.flag = 0;          npair.flag = 0;
         npair.count = 0;          npair.count = 0;
   
           /*
            * Note on termpair.  This allows a pre function to set a termp
            * flag that is automatically unset after the body, but before
            * the post function.  Thus, if a pre uses a termpair flag, it
            * must be reapplied in the post for use.
            */
   
         if (MDOC_TEXT != node->type) {          if (MDOC_TEXT != node->type) {
                 if (termacts[node->tok].pre)                  if (termacts[node->tok].pre)
                         if ( ! (*termacts[node->tok].pre)(p, &npair, meta, node))                          if ( ! (*termacts[node->tok].pre)(p, &npair, meta, node))
Line 374  print_node(DECL_ARGS)
Line 385  print_node(DECL_ARGS)
         if (dochild && node->child)          if (dochild && node->child)
                 print_body(p, &npair, meta, node->child);                  print_body(p, &npair, meta, node->child);
   
           p->flags &= ~npair.flag;
   
         /* Post-processing. */          /* Post-processing. */
   
         if (MDOC_TEXT != node->type)          if (MDOC_TEXT != node->type)
Line 382  print_node(DECL_ARGS)
Line 395  print_node(DECL_ARGS)
   
         p->offset = offset;          p->offset = offset;
         p->rmargin = rmargin;          p->rmargin = rmargin;
         p->flags &= ~npair.flag;  
 }  }
   
   
Line 407  print_foot(struct termp *p, const struct mdoc_meta *me
Line 419  print_foot(struct termp *p, const struct mdoc_meta *me
   
         tm = localtime(&meta->date);          tm = localtime(&meta->date);
   
         if (0 == strftime(buf, p->rmargin, "%B %d, %Y", tm))          if (0 == strftime(buf, p->rmargin, "%B %e, %Y", tm))
                 err(1, "strftime");                  err(1, "strftime");
   
         (void)strlcpy(os, meta->os, p->rmargin);          (void)strlcpy(os, meta->os, p->rmargin);
Line 660  fmt_block_vspace(struct termp *p, 
Line 672  fmt_block_vspace(struct termp *p, 
   
         if (arg_hasattr(MDOC_Compact, bl))          if (arg_hasattr(MDOC_Compact, bl))
                 return(1);                  return(1);
           /* XXX - not documented! */
           else if (arg_hasattr(MDOC_Column, bl))
                   return(1);
   
         for (n = node; n; n = n->parent) {          for (n = node; n; n = n->parent) {
                 if (MDOC_BLOCK != n->type)                  if (MDOC_BLOCK != n->type)
Line 797  termp_it_pre(DECL_ARGS)
Line 812  termp_it_pre(DECL_ARGS)
          */           */
   
         switch (type) {          switch (type) {
         case (MDOC_Diag):  
                 term_word(p, "\\ ");  
                 /* FALLTHROUGH */  
         case (MDOC_Inset):          case (MDOC_Inset):
                 if (MDOC_BODY == node->type)                  if (MDOC_BODY == node->type)
                         p->flags &= ~TERMP_NOSPACE;                          p->flags &= ~TERMP_NOSPACE;
Line 988  termp_it_post(DECL_ARGS)
Line 1000  termp_it_post(DECL_ARGS)
   
         switch (type) {          switch (type) {
         case (MDOC_Diag):          case (MDOC_Diag):
                   term_word(p, "\\ ");
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Item):          case (MDOC_Item):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
Line 1140  termp_nd_pre(DECL_ARGS)
Line 1153  termp_nd_pre(DECL_ARGS)
         if (MDOC_BODY != node->type)          if (MDOC_BODY != node->type)
                 return(1);                  return(1);
   
         /*  
          * XXX: signed off by jmc@openbsd.org.  This technically  
          * produces a minus sign after the Nd, which is wrong, but is  
          * consistent with the historic OpenBSD tmac file.  
          */  
 #if defined(__OpenBSD__) || defined(__linux__)  #if defined(__OpenBSD__) || defined(__linux__)
         term_word(p, "\\-");          term_word(p, "\\(en");
 #else  #else
         term_word(p, "\\(em");          term_word(p, "\\(em");
 #endif  #endif
Line 1564  termp_bd_pre(DECL_ARGS)
Line 1572  termp_bd_pre(DECL_ARGS)
          * Ew.           * Ew.
          */           */
   
         p->flags |= TERMP_LITERAL;  
         ln = node->child ? node->child->line : 0;          ln = node->child ? node->child->line : 0;
   
         for (node = node->child; node; node = node->next) {          for (node = node->child; node; node = node->next) {
Line 1587  termp_bd_post(DECL_ARGS)
Line 1594  termp_bd_post(DECL_ARGS)
   
         if (MDOC_BODY != node->type)          if (MDOC_BODY != node->type)
                 return;                  return;
   
         term_flushln(p);          term_flushln(p);
         p->flags &= ~TERMP_LITERAL;  
         p->flags |= TERMP_NOSPACE;  
 }  }
   
   
Line 1817  static void
Line 1821  static void
 termp_in_post(DECL_ARGS)  termp_in_post(DECL_ARGS)
 {  {
   
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE | ttypes[TTYPE_INCLUDE];
         term_word(p, ">");          term_word(p, ">");
           p->flags &= ~ttypes[TTYPE_INCLUDE];
   
         if (SEC_SYNOPSIS != node->sec)          if (SEC_SYNOPSIS != node->sec)
                 return;                  return;
Line 1832  termp_in_post(DECL_ARGS)
Line 1837  termp_in_post(DECL_ARGS)
          */           */
         if (node->next && MDOC_In != node->next->tok)          if (node->next && MDOC_In != node->next->tok)
                 term_vspace(p);                  term_vspace(p);
   }
   
   
   /* ARGSUSED */
   static int
   termp_sp_pre(DECL_ARGS)
   {
           int              i, len;
   
           if (NULL == node->child) {
                   term_vspace(p);
                   return(0);
           }
   
           len = atoi(node->child->string);
           if (0 == len)
                   term_newln(p);
           for (i = 0; i < len; i++)
                   term_vspace(p);
   
           return(0);
   }
   
   
   /* ARGSUSED */
   static int
   termp_br_pre(DECL_ARGS)
   {
   
           term_newln(p);
           return(1);
 }  }
   
   

Legend:
Removed from v.1.40  
changed lines
  Added in v.1.48

CVSweb