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

Diff for /mandoc/mdoc_html.c between version 1.230 and 1.237

version 1.230, 2015/04/16 20:22:27 version 1.237, 2015/10/06 18:32:19
Line 48  struct htmlmdoc {
Line 48  struct htmlmdoc {
         void            (*post)(MDOC_ARGS);          void            (*post)(MDOC_ARGS);
 };  };
   
 static  void              print_mdoc(MDOC_ARGS);  
 static  void              print_mdoc_head(MDOC_ARGS);  static  void              print_mdoc_head(MDOC_ARGS);
 static  void              print_mdoc_node(MDOC_ARGS);  static  void              print_mdoc_node(MDOC_ARGS);
 static  void              print_mdoc_nodelist(MDOC_ARGS);  static  void              print_mdoc_nodelist(MDOC_ARGS);
Line 264  static const char * const lists[LIST_MAX] = {
Line 263  static const char * const lists[LIST_MAX] = {
 };  };
   
   
 void  
 html_mdoc(void *arg, const struct mdoc *mdoc)  
 {  
   
         print_mdoc(mdoc_meta(mdoc), mdoc_node(mdoc)->child,  
             (struct html *)arg);  
         putchar('\n');  
 }  
   
 /*  /*
  * Calculate the scaling unit passed in a `-width' argument.  This uses   * Calculate the scaling unit passed in a `-width' argument.  This uses
  * either a native scaling unit (e.g., 1i, 2m) or the string length of   * either a native scaling unit (e.g., 1i, 2m) or the string length of
Line 331  synopsis_pre(struct html *h, const struct roff_node *n
Line 321  synopsis_pre(struct html *h, const struct roff_node *n
         }          }
 }  }
   
 static void  void
 print_mdoc(MDOC_ARGS)  html_mdoc(void *arg, const struct roff_man *mdoc)
 {  {
         struct tag      *t, *tt;  
         struct htmlpair  tag;          struct htmlpair  tag;
           struct html     *h;
           struct tag      *t, *tt;
   
         PAIR_CLASS_INIT(&tag, "mandoc");          PAIR_CLASS_INIT(&tag, "mandoc");
           h = (struct html *)arg;
   
         if ( ! (HTML_FRAGMENT & h->oflags)) {          if ( ! (HTML_FRAGMENT & h->oflags)) {
                 print_gen_decls(h);                  print_gen_decls(h);
                 t = print_otag(h, TAG_HTML, 0, NULL);                  t = print_otag(h, TAG_HTML, 0, NULL);
                 tt = print_otag(h, TAG_HEAD, 0, NULL);                  tt = print_otag(h, TAG_HEAD, 0, NULL);
                 print_mdoc_head(meta, n, h);                  print_mdoc_head(&mdoc->meta, mdoc->first->child, h);
                 print_tagq(h, tt);                  print_tagq(h, tt);
                 print_otag(h, TAG_BODY, 0, NULL);                  print_otag(h, TAG_BODY, 0, NULL);
                 print_otag(h, TAG_DIV, 1, &tag);                  print_otag(h, TAG_DIV, 1, &tag);
         } else          } else
                 t = print_otag(h, TAG_DIV, 1, &tag);                  t = print_otag(h, TAG_DIV, 1, &tag);
   
         mdoc_root_pre(meta, n, h);          mdoc_root_pre(&mdoc->meta, mdoc->first->child, h);
         print_mdoc_nodelist(meta, n, h);          print_mdoc_nodelist(&mdoc->meta, mdoc->first->child, h);
         mdoc_root_post(meta, n, h);          mdoc_root_post(&mdoc->meta, mdoc->first->child, h);
         print_tagq(h, t);          print_tagq(h, t);
           putchar('\n');
 }  }
   
 static void  static void
Line 531  mdoc_root_pre(MDOC_ARGS)
Line 524  mdoc_root_pre(MDOC_ARGS)
   
         free(title);          free(title);
         free(volume);          free(volume);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 543  mdoc_sh_pre(MDOC_ARGS)
Line 536  mdoc_sh_pre(MDOC_ARGS)
         case ROFFT_BLOCK:          case ROFFT_BLOCK:
                 PAIR_CLASS_INIT(&tag, "section");                  PAIR_CLASS_INIT(&tag, "section");
                 print_otag(h, TAG_DIV, 1, &tag);                  print_otag(h, TAG_DIV, 1, &tag);
                 return(1);                  return 1;
         case ROFFT_BODY:          case ROFFT_BODY:
                 if (n->sec == SEC_AUTHORS)                  if (n->sec == SEC_AUTHORS)
                         h->flags &= ~(HTML_SPLIT|HTML_NOSPLIT);                          h->flags &= ~(HTML_SPLIT|HTML_NOSPLIT);
                 return(1);                  return 1;
         default:          default:
                 break;                  break;
         }          }
Line 567  mdoc_sh_pre(MDOC_ARGS)
Line 560  mdoc_sh_pre(MDOC_ARGS)
         } else          } else
                 print_otag(h, TAG_H1, 0, NULL);                  print_otag(h, TAG_H1, 0, NULL);
   
         return(1);          return 1;
 }  }
   
 static int  static int
Line 578  mdoc_ss_pre(MDOC_ARGS)
Line 571  mdoc_ss_pre(MDOC_ARGS)
         if (n->type == ROFFT_BLOCK) {          if (n->type == ROFFT_BLOCK) {
                 PAIR_CLASS_INIT(&tag, "subsection");                  PAIR_CLASS_INIT(&tag, "subsection");
                 print_otag(h, TAG_DIV, 1, &tag);                  print_otag(h, TAG_DIV, 1, &tag);
                 return(1);                  return 1;
         } else if (n->type == ROFFT_BODY)          } else if (n->type == ROFFT_BODY)
                 return(1);                  return 1;
   
         bufinit(h);          bufinit(h);
         bufcat(h, "x");          bufcat(h, "x");
Line 597  mdoc_ss_pre(MDOC_ARGS)
Line 590  mdoc_ss_pre(MDOC_ARGS)
         } else          } else
                 print_otag(h, TAG_H2, 0, NULL);                  print_otag(h, TAG_H2, 0, NULL);
   
         return(1);          return 1;
 }  }
   
 static int  static int
Line 611  mdoc_fl_pre(MDOC_ARGS)
Line 604  mdoc_fl_pre(MDOC_ARGS)
         /* `Cm' has no leading hyphen. */          /* `Cm' has no leading hyphen. */
   
         if (MDOC_Cm == n->tok)          if (MDOC_Cm == n->tok)
                 return(1);                  return 1;
   
         print_text(h, "\\-");          print_text(h, "\\-");
   
Line 621  mdoc_fl_pre(MDOC_ARGS)
Line 614  mdoc_fl_pre(MDOC_ARGS)
              n->next->flags & MDOC_LINE)))               n->next->flags & MDOC_LINE)))
                 h->flags |= HTML_NOSPACE;                  h->flags |= HTML_NOSPACE;
   
         return(1);          return 1;
 }  }
   
 static int  static int
Line 630  mdoc_nd_pre(MDOC_ARGS)
Line 623  mdoc_nd_pre(MDOC_ARGS)
         struct htmlpair  tag;          struct htmlpair  tag;
   
         if (n->type != ROFFT_BODY)          if (n->type != ROFFT_BODY)
                 return(1);                  return 1;
   
         /* XXX: this tag in theory can contain block elements. */          /* XXX: this tag in theory can contain block elements. */
   
         print_text(h, "\\(em");          print_text(h, "\\(em");
         PAIR_CLASS_INIT(&tag, "desc");          PAIR_CLASS_INIT(&tag, "desc");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 648  mdoc_nm_pre(MDOC_ARGS)
Line 641  mdoc_nm_pre(MDOC_ARGS)
         int              len;          int              len;
   
         switch (n->type) {          switch (n->type) {
           case ROFFT_HEAD:
                   print_otag(h, TAG_TD, 0, NULL);
                   /* FALLTHROUGH */
         case ROFFT_ELEM:          case ROFFT_ELEM:
                 synopsis_pre(h, n);  
                 PAIR_CLASS_INIT(&tag, "name");                  PAIR_CLASS_INIT(&tag, "name");
                 print_otag(h, TAG_B, 1, &tag);                  print_otag(h, TAG_B, 1, &tag);
                 if (NULL == n->child && meta->name)                  if (n->child == NULL && meta->name != NULL)
                         print_text(h, meta->name);                          print_text(h, meta->name);
                 return(1);                  return 1;
         case ROFFT_HEAD:  
                 print_otag(h, TAG_TD, 0, NULL);  
                 if (NULL == n->child && meta->name)  
                         print_text(h, meta->name);  
                 return(1);  
         case ROFFT_BODY:          case ROFFT_BODY:
                 print_otag(h, TAG_TD, 0, NULL);                  print_otag(h, TAG_TD, 0, NULL);
                 return(1);                  return 1;
         default:          default:
                 break;                  break;
         }          }
Line 671  mdoc_nm_pre(MDOC_ARGS)
Line 661  mdoc_nm_pre(MDOC_ARGS)
         PAIR_CLASS_INIT(&tag, "synopsis");          PAIR_CLASS_INIT(&tag, "synopsis");
         print_otag(h, TAG_TABLE, 1, &tag);          print_otag(h, TAG_TABLE, 1, &tag);
   
         for (len = 0, n = n->child; n; n = n->next)          for (len = 0, n = n->head->child; n; n = n->next)
                 if (n->type == ROFFT_TEXT)                  if (n->type == ROFFT_TEXT)
                         len += html_strlen(n->string);                          len += html_strlen(n->string);
   
         if (0 == len && meta->name)          if (len == 0 && meta->name != NULL)
                 len = html_strlen(meta->name);                  len = html_strlen(meta->name);
   
         SCALE_HS_INIT(&su, len);          SCALE_HS_INIT(&su, len);
Line 686  mdoc_nm_pre(MDOC_ARGS)
Line 676  mdoc_nm_pre(MDOC_ARGS)
         print_otag(h, TAG_COL, 0, NULL);          print_otag(h, TAG_COL, 0, NULL);
         print_otag(h, TAG_TBODY, 0, NULL);          print_otag(h, TAG_TBODY, 0, NULL);
         print_otag(h, TAG_TR, 0, NULL);          print_otag(h, TAG_TR, 0, NULL);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 695  mdoc_xr_pre(MDOC_ARGS)
Line 685  mdoc_xr_pre(MDOC_ARGS)
         struct htmlpair  tag[2];          struct htmlpair  tag[2];
   
         if (NULL == n->child)          if (NULL == n->child)
                 return(0);                  return 0;
   
         PAIR_CLASS_INIT(&tag[0], "link-man");          PAIR_CLASS_INIT(&tag[0], "link-man");
   
Line 712  mdoc_xr_pre(MDOC_ARGS)
Line 702  mdoc_xr_pre(MDOC_ARGS)
         print_text(h, n->string);          print_text(h, n->string);
   
         if (NULL == (n = n->next))          if (NULL == (n = n->next))
                 return(0);                  return 0;
   
         h->flags |= HTML_NOSPACE;          h->flags |= HTML_NOSPACE;
         print_text(h, "(");          print_text(h, "(");
Line 720  mdoc_xr_pre(MDOC_ARGS)
Line 710  mdoc_xr_pre(MDOC_ARGS)
         print_text(h, n->string);          print_text(h, n->string);
         h->flags |= HTML_NOSPACE;          h->flags |= HTML_NOSPACE;
         print_text(h, ")");          print_text(h, ")");
         return(0);          return 0;
 }  }
   
 static int  static int
Line 729  mdoc_ns_pre(MDOC_ARGS)
Line 719  mdoc_ns_pre(MDOC_ARGS)
   
         if ( ! (MDOC_LINE & n->flags))          if ( ! (MDOC_LINE & n->flags))
                 h->flags |= HTML_NOSPACE;                  h->flags |= HTML_NOSPACE;
         return(1);          return 1;
 }  }
   
 static int  static int
Line 739  mdoc_ar_pre(MDOC_ARGS)
Line 729  mdoc_ar_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "arg");          PAIR_CLASS_INIT(&tag, "arg");
         print_otag(h, TAG_I, 1, &tag);          print_otag(h, TAG_I, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 769  mdoc_xx_pre(MDOC_ARGS)
Line 759  mdoc_xx_pre(MDOC_ARGS)
                 pp = "UNIX";                  pp = "UNIX";
                 break;                  break;
         default:          default:
                 return(1);                  return 1;
         }          }
   
         PAIR_CLASS_INIT(&tag, "unix");          PAIR_CLASS_INIT(&tag, "unix");
Line 782  mdoc_xx_pre(MDOC_ARGS)
Line 772  mdoc_xx_pre(MDOC_ARGS)
                 print_text(h, n->child->string);                  print_text(h, n->child->string);
                 h->flags = flags;                  h->flags = flags;
         }          }
         return(0);          return 0;
 }  }
   
 static int  static int
Line 799  mdoc_bx_pre(MDOC_ARGS)
Line 789  mdoc_bx_pre(MDOC_ARGS)
                 print_text(h, "BSD");                  print_text(h, "BSD");
         } else {          } else {
                 print_text(h, "BSD");                  print_text(h, "BSD");
                 return(0);                  return 0;
         }          }
   
         if (NULL != (n = n->next)) {          if (NULL != (n = n->next)) {
Line 809  mdoc_bx_pre(MDOC_ARGS)
Line 799  mdoc_bx_pre(MDOC_ARGS)
                 print_text(h, n->string);                  print_text(h, n->string);
         }          }
   
         return(0);          return 0;
 }  }
   
 static int  static int
Line 844  mdoc_it_pre(MDOC_ARGS)
Line 834  mdoc_it_pre(MDOC_ARGS)
                 case LIST_hyphen:                  case LIST_hyphen:
                         /* FALLTHROUGH */                          /* FALLTHROUGH */
                 case LIST_enum:                  case LIST_enum:
                         return(0);                          return 0;
                 case LIST_diag:                  case LIST_diag:
                         /* FALLTHROUGH */                          /* FALLTHROUGH */
                 case LIST_hang:                  case LIST_hang:
Line 921  mdoc_it_pre(MDOC_ARGS)
Line 911  mdoc_it_pre(MDOC_ARGS)
                 }                  }
         }          }
   
         return(1);          return 1;
 }  }
   
 static int  static int
Line 935  mdoc_bl_pre(MDOC_ARGS)
Line 925  mdoc_bl_pre(MDOC_ARGS)
         if (n->type == ROFFT_BODY) {          if (n->type == ROFFT_BODY) {
                 if (LIST_column == n->norm->Bl.type)                  if (LIST_column == n->norm->Bl.type)
                         print_otag(h, TAG_TBODY, 0, NULL);                          print_otag(h, TAG_TBODY, 0, NULL);
                 return(1);                  return 1;
         }          }
   
         if (n->type == ROFFT_HEAD) {          if (n->type == ROFFT_HEAD) {
                 if (LIST_column != n->norm->Bl.type)                  if (LIST_column != n->norm->Bl.type)
                         return(0);                          return 0;
   
                 /*                  /*
                  * For each column, print out the <COL> tag with our                   * For each column, print out the <COL> tag with our
Line 960  mdoc_bl_pre(MDOC_ARGS)
Line 950  mdoc_bl_pre(MDOC_ARGS)
                         print_otag(h, TAG_COL, 1, tag);                          print_otag(h, TAG_COL, 1, tag);
                 }                  }
   
                 return(0);                  return 0;
         }          }
   
         SCALE_VS_INIT(&su, 0);          SCALE_VS_INIT(&su, 0);
Line 1010  mdoc_bl_pre(MDOC_ARGS)
Line 1000  mdoc_bl_pre(MDOC_ARGS)
                 break;                  break;
         default:          default:
                 abort();                  abort();
                 /* NOTREACHED */  
         }          }
   
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1053  mdoc_ex_pre(MDOC_ARGS)
Line 1042  mdoc_ex_pre(MDOC_ARGS)
                 print_text(h, "utility exits\\~0");                  print_text(h, "utility exits\\~0");
   
         print_text(h, "on success, and\\~>0 if an error occurs.");          print_text(h, "on success, and\\~>0 if an error occurs.");
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1063  mdoc_em_pre(MDOC_ARGS)
Line 1052  mdoc_em_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "emph");          PAIR_CLASS_INIT(&tag, "emph");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1073  mdoc_d1_pre(MDOC_ARGS)
Line 1062  mdoc_d1_pre(MDOC_ARGS)
         struct roffsu    su;          struct roffsu    su;
   
         if (n->type != ROFFT_BLOCK)          if (n->type != ROFFT_BLOCK)
                 return(1);                  return 1;
   
         SCALE_VS_INIT(&su, 0);          SCALE_VS_INIT(&su, 0);
         bufinit(h);          bufinit(h);
Line 1092  mdoc_d1_pre(MDOC_ARGS)
Line 1081  mdoc_d1_pre(MDOC_ARGS)
                 print_otag(h, TAG_CODE, 1, tag);                  print_otag(h, TAG_CODE, 1, tag);
         }          }
   
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1114  mdoc_sx_pre(MDOC_ARGS)
Line 1103  mdoc_sx_pre(MDOC_ARGS)
   
         print_otag(h, TAG_I, 1, tag);          print_otag(h, TAG_I, 1, tag);
         print_otag(h, TAG_A, 2, tag);          print_otag(h, TAG_A, 2, tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1126  mdoc_bd_pre(MDOC_ARGS)
Line 1115  mdoc_bd_pre(MDOC_ARGS)
         struct roffsu            su;          struct roffsu            su;
   
         if (n->type == ROFFT_HEAD)          if (n->type == ROFFT_HEAD)
                 return(0);                  return 0;
   
         if (n->type == ROFFT_BLOCK) {          if (n->type == ROFFT_BLOCK) {
                 comp = n->norm->Bd.comp;                  comp = n->norm->Bd.comp;
Line 1140  mdoc_bd_pre(MDOC_ARGS)
Line 1129  mdoc_bd_pre(MDOC_ARGS)
                 }                  }
                 if ( ! comp)                  if ( ! comp)
                         print_paragraph(h);                          print_paragraph(h);
                 return(1);                  return 1;
         }          }
   
         /* Handle the -offset argument. */          /* Handle the -offset argument. */
Line 1163  mdoc_bd_pre(MDOC_ARGS)
Line 1152  mdoc_bd_pre(MDOC_ARGS)
             DISP_literal != n->norm->Bd.type) {              DISP_literal != n->norm->Bd.type) {
                 PAIR_CLASS_INIT(&tag[1], "display");                  PAIR_CLASS_INIT(&tag[1], "display");
                 print_otag(h, TAG_DIV, 2, tag);                  print_otag(h, TAG_DIV, 2, tag);
                 return(1);                  return 1;
         }          }
   
         PAIR_CLASS_INIT(&tag[1], "lit display");          PAIR_CLASS_INIT(&tag[1], "lit display");
Line 1214  mdoc_bd_pre(MDOC_ARGS)
Line 1203  mdoc_bd_pre(MDOC_ARGS)
         if (0 == sv)          if (0 == sv)
                 h->flags &= ~HTML_LITERAL;                  h->flags &= ~HTML_LITERAL;
   
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1224  mdoc_pa_pre(MDOC_ARGS)
Line 1213  mdoc_pa_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "file");          PAIR_CLASS_INIT(&tag, "file");
         print_otag(h, TAG_I, 1, &tag);          print_otag(h, TAG_I, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1234  mdoc_ad_pre(MDOC_ARGS)
Line 1223  mdoc_ad_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "addr");          PAIR_CLASS_INIT(&tag, "addr");
         print_otag(h, TAG_I, 1, &tag);          print_otag(h, TAG_I, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1245  mdoc_an_pre(MDOC_ARGS)
Line 1234  mdoc_an_pre(MDOC_ARGS)
         if (n->norm->An.auth == AUTH_split) {          if (n->norm->An.auth == AUTH_split) {
                 h->flags &= ~HTML_NOSPLIT;                  h->flags &= ~HTML_NOSPLIT;
                 h->flags |= HTML_SPLIT;                  h->flags |= HTML_SPLIT;
                 return(0);                  return 0;
         }          }
         if (n->norm->An.auth == AUTH_nosplit) {          if (n->norm->An.auth == AUTH_nosplit) {
                 h->flags &= ~HTML_SPLIT;                  h->flags &= ~HTML_SPLIT;
                 h->flags |= HTML_NOSPLIT;                  h->flags |= HTML_NOSPLIT;
                 return(0);                  return 0;
         }          }
   
         if (h->flags & HTML_SPLIT)          if (h->flags & HTML_SPLIT)
Line 1261  mdoc_an_pre(MDOC_ARGS)
Line 1250  mdoc_an_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "author");          PAIR_CLASS_INIT(&tag, "author");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1272  mdoc_cd_pre(MDOC_ARGS)
Line 1261  mdoc_cd_pre(MDOC_ARGS)
         synopsis_pre(h, n);          synopsis_pre(h, n);
         PAIR_CLASS_INIT(&tag, "config");          PAIR_CLASS_INIT(&tag, "config");
         print_otag(h, TAG_B, 1, &tag);          print_otag(h, TAG_B, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1282  mdoc_dv_pre(MDOC_ARGS)
Line 1271  mdoc_dv_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "define");          PAIR_CLASS_INIT(&tag, "define");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1292  mdoc_ev_pre(MDOC_ARGS)
Line 1281  mdoc_ev_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "env");          PAIR_CLASS_INIT(&tag, "env");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1302  mdoc_er_pre(MDOC_ARGS)
Line 1291  mdoc_er_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "errno");          PAIR_CLASS_INIT(&tag, "errno");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1315  mdoc_fa_pre(MDOC_ARGS)
Line 1304  mdoc_fa_pre(MDOC_ARGS)
         PAIR_CLASS_INIT(&tag, "farg");          PAIR_CLASS_INIT(&tag, "farg");
         if (n->parent->tok != MDOC_Fo) {          if (n->parent->tok != MDOC_Fo) {
                 print_otag(h, TAG_I, 1, &tag);                  print_otag(h, TAG_I, 1, &tag);
                 return(1);                  return 1;
         }          }
   
         for (nn = n->child; nn; nn = nn->next) {          for (nn = n->child; nn; nn = nn->next) {
Line 1333  mdoc_fa_pre(MDOC_ARGS)
Line 1322  mdoc_fa_pre(MDOC_ARGS)
                 print_text(h, ",");                  print_text(h, ",");
         }          }
   
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1348  mdoc_fd_pre(MDOC_ARGS)
Line 1337  mdoc_fd_pre(MDOC_ARGS)
         synopsis_pre(h, n);          synopsis_pre(h, n);
   
         if (NULL == (n = n->child))          if (NULL == (n = n->child))
                 return(0);                  return 0;
   
         assert(n->type == ROFFT_TEXT);          assert(n->type == ROFFT_TEXT);
   
         if (strcmp(n->string, "#include")) {          if (strcmp(n->string, "#include")) {
                 PAIR_CLASS_INIT(&tag[0], "macro");                  PAIR_CLASS_INIT(&tag[0], "macro");
                 print_otag(h, TAG_B, 1, tag);                  print_otag(h, TAG_B, 1, tag);
                 return(1);                  return 1;
         }          }
   
         PAIR_CLASS_INIT(&tag[0], "includes");          PAIR_CLASS_INIT(&tag[0], "includes");
Line 1401  mdoc_fd_pre(MDOC_ARGS)
Line 1390  mdoc_fd_pre(MDOC_ARGS)
                 print_text(h, n->string);                  print_text(h, n->string);
         }          }
   
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1411  mdoc_vt_pre(MDOC_ARGS)
Line 1400  mdoc_vt_pre(MDOC_ARGS)
   
         if (n->type == ROFFT_BLOCK) {          if (n->type == ROFFT_BLOCK) {
                 synopsis_pre(h, n);                  synopsis_pre(h, n);
                 return(1);                  return 1;
         } else if (n->type == ROFFT_ELEM) {          } else if (n->type == ROFFT_ELEM) {
                 synopsis_pre(h, n);                  synopsis_pre(h, n);
         } else if (n->type == ROFFT_HEAD)          } else if (n->type == ROFFT_HEAD)
                 return(0);                  return 0;
   
         PAIR_CLASS_INIT(&tag, "type");          PAIR_CLASS_INIT(&tag, "type");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1430  mdoc_ft_pre(MDOC_ARGS)
Line 1419  mdoc_ft_pre(MDOC_ARGS)
         synopsis_pre(h, n);          synopsis_pre(h, n);
         PAIR_CLASS_INIT(&tag, "ftype");          PAIR_CLASS_INIT(&tag, "ftype");
         print_otag(h, TAG_I, 1, &tag);          print_otag(h, TAG_I, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1520  mdoc_fn_pre(MDOC_ARGS)
Line 1509  mdoc_fn_pre(MDOC_ARGS)
                 print_text(h, ";");                  print_text(h, ";");
         }          }
   
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1537  mdoc_sm_pre(MDOC_ARGS)
Line 1526  mdoc_sm_pre(MDOC_ARGS)
         if ( ! (HTML_NONOSPACE & h->flags))          if ( ! (HTML_NONOSPACE & h->flags))
                 h->flags &= ~HTML_NOSPACE;                  h->flags &= ~HTML_NOSPACE;
   
         return(0);          return 0;
 }  }
   
 static int  static int
 mdoc_skip_pre(MDOC_ARGS)  mdoc_skip_pre(MDOC_ARGS)
 {  {
   
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1552  mdoc_pp_pre(MDOC_ARGS)
Line 1541  mdoc_pp_pre(MDOC_ARGS)
 {  {
   
         print_paragraph(h);          print_paragraph(h);
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1581  mdoc_sp_pre(MDOC_ARGS)
Line 1570  mdoc_sp_pre(MDOC_ARGS)
         /* So the div isn't empty: */          /* So the div isn't empty: */
         print_text(h, "\\~");          print_text(h, "\\~");
   
         return(0);          return 0;
   
 }  }
   
Line 1591  mdoc_lk_pre(MDOC_ARGS)
Line 1580  mdoc_lk_pre(MDOC_ARGS)
         struct htmlpair  tag[2];          struct htmlpair  tag[2];
   
         if (NULL == (n = n->child))          if (NULL == (n = n->child))
                 return(0);                  return 0;
   
         assert(n->type == ROFFT_TEXT);          assert(n->type == ROFFT_TEXT);
   
Line 1606  mdoc_lk_pre(MDOC_ARGS)
Line 1595  mdoc_lk_pre(MDOC_ARGS)
         for (n = n->next; n; n = n->next)          for (n = n->next; n; n = n->next)
                 print_text(h, n->string);                  print_text(h, n->string);
   
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1630  mdoc_mt_pre(MDOC_ARGS)
Line 1619  mdoc_mt_pre(MDOC_ARGS)
                 print_tagq(h, t);                  print_tagq(h, t);
         }          }
   
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1643  mdoc_fo_pre(MDOC_ARGS)
Line 1632  mdoc_fo_pre(MDOC_ARGS)
                 h->flags |= HTML_NOSPACE;                  h->flags |= HTML_NOSPACE;
                 print_text(h, "(");                  print_text(h, "(");
                 h->flags |= HTML_NOSPACE;                  h->flags |= HTML_NOSPACE;
                 return(1);                  return 1;
         } else if (n->type == ROFFT_BLOCK) {          } else if (n->type == ROFFT_BLOCK) {
                 synopsis_pre(h, n);                  synopsis_pre(h, n);
                 return(1);                  return 1;
         }          }
   
         /* XXX: we drop non-initial arguments as per groff. */          if (n->child == NULL)
                   return 0;
   
         assert(n->child);  
         assert(n->child->string);          assert(n->child->string);
   
         PAIR_CLASS_INIT(&tag, "fname");          PAIR_CLASS_INIT(&tag, "fname");
         t = print_otag(h, TAG_B, 1, &tag);          t = print_otag(h, TAG_B, 1, &tag);
         print_text(h, n->child->string);          print_text(h, n->child->string);
         print_tagq(h, t);          print_tagq(h, t);
         return(0);          return 0;
 }  }
   
 static void  static void
Line 1725  mdoc_in_pre(MDOC_ARGS)
Line 1713  mdoc_in_pre(MDOC_ARGS)
                 print_text(h, n->string);                  print_text(h, n->string);
         }          }
   
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1735  mdoc_ic_pre(MDOC_ARGS)
Line 1723  mdoc_ic_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "cmd");          PAIR_CLASS_INIT(&tag, "cmd");
         print_otag(h, TAG_B, 1, &tag);          print_otag(h, TAG_B, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1791  mdoc_rv_pre(MDOC_ARGS)
Line 1779  mdoc_rv_pre(MDOC_ARGS)
         print_text(h, "errno");          print_text(h, "errno");
         print_tagq(h, t);          print_tagq(h, t);
         print_text(h, "is set to indicate the error.");          print_text(h, "is set to indicate the error.");
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1801  mdoc_va_pre(MDOC_ARGS)
Line 1789  mdoc_va_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "var");          PAIR_CLASS_INIT(&tag, "var");
         print_otag(h, TAG_B, 1, &tag);          print_otag(h, TAG_B, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1811  mdoc_ap_pre(MDOC_ARGS)
Line 1799  mdoc_ap_pre(MDOC_ARGS)
         h->flags |= HTML_NOSPACE;          h->flags |= HTML_NOSPACE;
         print_text(h, "\\(aq");          print_text(h, "\\(aq");
         h->flags |= HTML_NOSPACE;          h->flags |= HTML_NOSPACE;
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1821  mdoc_bf_pre(MDOC_ARGS)
Line 1809  mdoc_bf_pre(MDOC_ARGS)
         struct roffsu    su;          struct roffsu    su;
   
         if (n->type == ROFFT_HEAD)          if (n->type == ROFFT_HEAD)
                 return(0);                  return 0;
         else if (n->type != ROFFT_BODY)          else if (n->type != ROFFT_BODY)
                 return(1);                  return 1;
   
         if (FONT_Em == n->norm->Bf.font)          if (FONT_Em == n->norm->Bf.font)
                 PAIR_CLASS_INIT(&tag[0], "emph");                  PAIR_CLASS_INIT(&tag[0], "emph");
Line 1845  mdoc_bf_pre(MDOC_ARGS)
Line 1833  mdoc_bf_pre(MDOC_ARGS)
         bufcat_su(h, "margin-left", &su);          bufcat_su(h, "margin-left", &su);
         PAIR_STYLE_INIT(&tag[1], h);          PAIR_STYLE_INIT(&tag[1], h);
         print_otag(h, TAG_DIV, 2, tag);          print_otag(h, TAG_DIV, 2, tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1855  mdoc_ms_pre(MDOC_ARGS)
Line 1843  mdoc_ms_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "symb");          PAIR_CLASS_INIT(&tag, "symb");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1863  mdoc_igndelim_pre(MDOC_ARGS)
Line 1851  mdoc_igndelim_pre(MDOC_ARGS)
 {  {
   
         h->flags |= HTML_IGNDELIM;          h->flags |= HTML_IGNDELIM;
         return(1);          return 1;
 }  }
   
 static void  static void
Line 1880  mdoc_rs_pre(MDOC_ARGS)
Line 1868  mdoc_rs_pre(MDOC_ARGS)
         struct htmlpair  tag;          struct htmlpair  tag;
   
         if (n->type != ROFFT_BLOCK)          if (n->type != ROFFT_BLOCK)
                 return(1);                  return 1;
   
         if (n->prev && SEC_SEE_ALSO == n->sec)          if (n->prev && SEC_SEE_ALSO == n->sec)
                 print_paragraph(h);                  print_paragraph(h);
   
         PAIR_CLASS_INIT(&tag, "ref");          PAIR_CLASS_INIT(&tag, "ref");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1897  mdoc_no_pre(MDOC_ARGS)
Line 1885  mdoc_no_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "none");          PAIR_CLASS_INIT(&tag, "none");
         print_otag(h, TAG_CODE, 1, &tag);          print_otag(h, TAG_CODE, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1907  mdoc_li_pre(MDOC_ARGS)
Line 1895  mdoc_li_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "lit");          PAIR_CLASS_INIT(&tag, "lit");
         print_otag(h, TAG_CODE, 1, &tag);          print_otag(h, TAG_CODE, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1917  mdoc_sy_pre(MDOC_ARGS)
Line 1905  mdoc_sy_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "symb");          PAIR_CLASS_INIT(&tag, "symb");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 1925  mdoc_bt_pre(MDOC_ARGS)
Line 1913  mdoc_bt_pre(MDOC_ARGS)
 {  {
   
         print_text(h, "is currently in beta test.");          print_text(h, "is currently in beta test.");
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1933  mdoc_ud_pre(MDOC_ARGS)
Line 1921  mdoc_ud_pre(MDOC_ARGS)
 {  {
   
         print_text(h, "currently under development.");          print_text(h, "currently under development.");
         return(0);          return 0;
 }  }
   
 static int  static int
Line 1946  mdoc_lb_pre(MDOC_ARGS)
Line 1934  mdoc_lb_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag, "lib");          PAIR_CLASS_INIT(&tag, "lib");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, &tag);
         return(1);          return 1;
 }  }
   
 static int  static int
Line 2008  mdoc__x_pre(MDOC_ARGS)
Line 1996  mdoc__x_pre(MDOC_ARGS)
                 break;                  break;
         default:          default:
                 abort();                  abort();
                 /* NOTREACHED */  
         }          }
   
         if (MDOC__U != n->tok) {          if (MDOC__U != n->tok) {
                 print_otag(h, t, 1, tag);                  print_otag(h, t, 1, tag);
                 return(1);                  return 1;
         }          }
   
         PAIR_HREF_INIT(&tag[1], n->child->string);          PAIR_HREF_INIT(&tag[1], n->child->string);
         print_otag(h, TAG_A, 2, tag);          print_otag(h, TAG_A, 2, tag);
   
         return(1);          return 1;
 }  }
   
 static void  static void
Line 2048  mdoc_bk_pre(MDOC_ARGS)
Line 2035  mdoc_bk_pre(MDOC_ARGS)
         case ROFFT_BLOCK:          case ROFFT_BLOCK:
                 break;                  break;
         case ROFFT_HEAD:          case ROFFT_HEAD:
                 return(0);                  return 0;
         case ROFFT_BODY:          case ROFFT_BODY:
                 if (n->parent->args || 0 == n->prev->nchild)                  if (n->parent->args || 0 == n->prev->nchild)
                         h->flags |= HTML_PREKEEP;                          h->flags |= HTML_PREKEEP;
                 break;                  break;
         default:          default:
                 abort();                  abort();
                 /* NOTREACHED */  
         }          }
   
         return(1);          return 1;
 }  }
   
 static void  static void
Line 2075  mdoc_quote_pre(MDOC_ARGS)
Line 2061  mdoc_quote_pre(MDOC_ARGS)
         struct htmlpair tag;          struct htmlpair tag;
   
         if (n->type != ROFFT_BODY)          if (n->type != ROFFT_BODY)
                 return(1);                  return 1;
   
         switch (n->tok) {          switch (n->tok) {
         case MDOC_Ao:          case MDOC_Ao:
Line 2105  mdoc_quote_pre(MDOC_ARGS)
Line 2091  mdoc_quote_pre(MDOC_ARGS)
         case MDOC_En:          case MDOC_En:
                 if (NULL == n->norm->Es ||                  if (NULL == n->norm->Es ||
                     NULL == n->norm->Es->child)                      NULL == n->norm->Es->child)
                         return(1);                          return 1;
                 print_text(h, n->norm->Es->child->string);                  print_text(h, n->norm->Es->child->string);
                 break;                  break;
         case MDOC_Do:          case MDOC_Do:
Line 2135  mdoc_quote_pre(MDOC_ARGS)
Line 2121  mdoc_quote_pre(MDOC_ARGS)
                 break;                  break;
         default:          default:
                 abort();                  abort();
                 /* NOTREACHED */  
         }          }
   
         h->flags |= HTML_NOSPACE;          h->flags |= HTML_NOSPACE;
         return(1);          return 1;
 }  }
   
 static void  static void
Line 2203  mdoc_quote_post(MDOC_ARGS)
Line 2188  mdoc_quote_post(MDOC_ARGS)
                 break;                  break;
         default:          default:
                 abort();                  abort();
                 /* NOTREACHED */  
         }          }
 }  }
   
Line 2212  mdoc_eo_pre(MDOC_ARGS)
Line 2196  mdoc_eo_pre(MDOC_ARGS)
 {  {
   
         if (n->type != ROFFT_BODY)          if (n->type != ROFFT_BODY)
                 return(1);                  return 1;
   
         if (n->end == ENDBODY_NOT &&          if (n->end == ENDBODY_NOT &&
             n->parent->head->child == NULL &&              n->parent->head->child == NULL &&
Line 2223  mdoc_eo_pre(MDOC_ARGS)
Line 2207  mdoc_eo_pre(MDOC_ARGS)
             n->parent->head->child != NULL && (n->child != NULL ||              n->parent->head->child != NULL && (n->child != NULL ||
             (n->parent->tail != NULL && n->parent->tail->child != NULL)))              (n->parent->tail != NULL && n->parent->tail->child != NULL)))
                 h->flags |= HTML_NOSPACE;                  h->flags |= HTML_NOSPACE;
         return(1);          return 1;
 }  }
   
 static void  static void

Legend:
Removed from v.1.230  
changed lines
  Added in v.1.237

CVSweb