[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.174 and 1.187

version 1.174, 2011/07/23 22:57:13 version 1.187, 2014/03/30 19:47:48
Line 1 
Line 1 
 /*      $Id$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
    * Copyright (c) 2014 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 34 
Line 35 
 #include "main.h"  #include "main.h"
   
 #define INDENT           5  #define INDENT           5
 #define HALFINDENT       3  
   
 #define MDOC_ARGS         const struct mdoc_meta *m, \  #define MDOC_ARGS         const struct mdoc_meta *meta, \
                           const struct mdoc_node *n, \                            const struct mdoc_node *n, \
                           struct html *h                            struct html *h
   
Line 96  static int    mdoc_it_pre(MDOC_ARGS);
Line 96  static int    mdoc_it_pre(MDOC_ARGS);
 static  int               mdoc_lb_pre(MDOC_ARGS);  static  int               mdoc_lb_pre(MDOC_ARGS);
 static  int               mdoc_li_pre(MDOC_ARGS);  static  int               mdoc_li_pre(MDOC_ARGS);
 static  int               mdoc_lk_pre(MDOC_ARGS);  static  int               mdoc_lk_pre(MDOC_ARGS);
   static  int               mdoc_ll_pre(MDOC_ARGS);
 static  int               mdoc_mt_pre(MDOC_ARGS);  static  int               mdoc_mt_pre(MDOC_ARGS);
 static  int               mdoc_ms_pre(MDOC_ARGS);  static  int               mdoc_ms_pre(MDOC_ARGS);
 static  int               mdoc_nd_pre(MDOC_ARGS);  static  int               mdoc_nd_pre(MDOC_ARGS);
Line 190  static const struct htmlmdoc mdocs[MDOC_MAX] = {
Line 191  static const struct htmlmdoc mdocs[MDOC_MAX] = {
         {NULL, NULL}, /* Ec */ /* FIXME: no space */          {NULL, NULL}, /* Ec */ /* FIXME: no space */
         {NULL, NULL}, /* Ef */          {NULL, NULL}, /* Ef */
         {mdoc_em_pre, NULL}, /* Em */          {mdoc_em_pre, NULL}, /* Em */
         {NULL, NULL}, /* Eo */          {mdoc_quote_pre, mdoc_quote_post}, /* Eo */
         {mdoc_xx_pre, NULL}, /* Fx */          {mdoc_xx_pre, NULL}, /* Fx */
         {mdoc_ms_pre, NULL}, /* Ms */          {mdoc_ms_pre, NULL}, /* Ms */
         {mdoc_igndelim_pre, NULL}, /* No */          {mdoc_igndelim_pre, NULL}, /* No */
Line 243  static const struct htmlmdoc mdocs[MDOC_MAX] = {
Line 244  static const struct htmlmdoc mdocs[MDOC_MAX] = {
         {mdoc_sp_pre, NULL}, /* sp */          {mdoc_sp_pre, NULL}, /* sp */
         {mdoc__x_pre, mdoc__x_post}, /* %U */          {mdoc__x_pre, mdoc__x_post}, /* %U */
         {NULL, NULL}, /* Ta */          {NULL, NULL}, /* Ta */
           {mdoc_ll_pre, NULL}, /* ll */
 };  };
   
 static  const char * const lists[LIST_MAX] = {  static  const char * const lists[LIST_MAX] = {
Line 261  static const char * const lists[LIST_MAX] = {
Line 263  static const char * const lists[LIST_MAX] = {
 };  };
   
 void  void
 html_mdoc(void *arg, const struct mdoc *m)  html_mdoc(void *arg, const struct mdoc *mdoc)
 {  {
         struct html     *h;  
         struct tag      *t;  
   
         h = (struct html *)arg;          print_mdoc(mdoc_meta(mdoc), mdoc_node(mdoc),
                           (struct html *)arg);
         print_gen_decls(h);          putchar('\n');
         t = print_otag(h, TAG_HTML, 0, NULL);  
         print_mdoc(mdoc_meta(m), mdoc_node(m), h);  
         print_tagq(h, t);  
   
         printf("\n");  
 }  }
   
   
Line 353  a2offs(const char *p, struct roffsu *su)
Line 348  a2offs(const char *p, struct roffsu *su)
                 SCALE_HS_INIT(su, INDENT);                  SCALE_HS_INIT(su, INDENT);
         else if (0 == strcmp(p, "indent-two"))          else if (0 == strcmp(p, "indent-two"))
                 SCALE_HS_INIT(su, INDENT * 2);                  SCALE_HS_INIT(su, INDENT * 2);
         else if ( ! a2roffsu(p, su, SCALE_MAX)) {          else if ( ! a2roffsu(p, su, SCALE_MAX))
                 su->unit = SCALE_BU;                  SCALE_HS_INIT(su, html_strlen(p));
                 su->scale = html_strlen(p);  
         }  
 }  }
   
   
 static void  static void
 print_mdoc(MDOC_ARGS)  print_mdoc(MDOC_ARGS)
 {  {
         struct tag      *t;          struct tag      *t, *tt;
           struct htmlpair  tag;
   
         t = print_otag(h, TAG_HEAD, 0, NULL);          PAIR_CLASS_INIT(&tag, "mandoc");
         print_mdoc_head(m, n, h);  
         print_tagq(h, t);  
   
         t = print_otag(h, TAG_BODY, 0, NULL);          if ( ! (HTML_FRAGMENT & h->oflags)) {
         print_mdoc_nodelist(m, n, h);                  print_gen_decls(h);
                   t = print_otag(h, TAG_HTML, 0, NULL);
                   tt = print_otag(h, TAG_HEAD, 0, NULL);
                   print_mdoc_head(meta, n, h);
                   print_tagq(h, tt);
                   print_otag(h, TAG_BODY, 0, NULL);
                   print_otag(h, TAG_DIV, 1, &tag);
           } else
                   t = print_otag(h, TAG_DIV, 1, &tag);
   
           print_mdoc_nodelist(meta, n, h);
         print_tagq(h, t);          print_tagq(h, t);
 }  }
   
Line 382  print_mdoc_head(MDOC_ARGS)
Line 384  print_mdoc_head(MDOC_ARGS)
   
         print_gen_head(h);          print_gen_head(h);
         bufinit(h);          bufinit(h);
         bufcat_fmt(h, "%s(%s)", m->title, m->msec);          bufcat_fmt(h, "%s(%s)", meta->title, meta->msec);
   
         if (m->arch)          if (meta->arch)
                 bufcat_fmt(h, " (%s)", m->arch);                  bufcat_fmt(h, " (%s)", meta->arch);
   
         print_otag(h, TAG_TITLE, 0, NULL);          print_otag(h, TAG_TITLE, 0, NULL);
         print_text(h, h->buf);          print_text(h, h->buf);
Line 396  static void
Line 398  static void
 print_mdoc_nodelist(MDOC_ARGS)  print_mdoc_nodelist(MDOC_ARGS)
 {  {
   
         print_mdoc_node(m, n, h);          print_mdoc_node(meta, n, h);
         if (n->next)          if (n->next)
                 print_mdoc_nodelist(m, n->next, h);                  print_mdoc_nodelist(meta, n->next, h);
 }  }
   
   
Line 413  print_mdoc_node(MDOC_ARGS)
Line 415  print_mdoc_node(MDOC_ARGS)
   
         switch (n->type) {          switch (n->type) {
         case (MDOC_ROOT):          case (MDOC_ROOT):
                 child = mdoc_root_pre(m, n, h);                  child = mdoc_root_pre(meta, n, h);
                 break;                  break;
         case (MDOC_TEXT):          case (MDOC_TEXT):
                 /* No tables in this mode... */                  /* No tables in this mode... */
Line 456  print_mdoc_node(MDOC_ARGS)
Line 458  print_mdoc_node(MDOC_ARGS)
   
                 assert(NULL == h->tblt);                  assert(NULL == h->tblt);
                 if (mdocs[n->tok].pre && ENDBODY_NOT == n->end)                  if (mdocs[n->tok].pre && ENDBODY_NOT == n->end)
                         child = (*mdocs[n->tok].pre)(m, n, h);                          child = (*mdocs[n->tok].pre)(meta, n, h);
                 break;                  break;
         }          }
   
         if (HTML_KEEP & h->flags) {          if (HTML_KEEP & h->flags) {
                 if (n->prev && n->prev->line != n->line) {                  if (n->prev ? (n->prev->lastline != n->line) :
                       (n->parent && n->parent->line != n->line)) {
                         h->flags &= ~HTML_KEEP;                          h->flags &= ~HTML_KEEP;
                         h->flags |= HTML_PREKEEP;                          h->flags |= HTML_PREKEEP;
                 } else if (NULL == n->prev) {  
                         if (n->parent && n->parent->line != n->line) {  
                                 h->flags &= ~HTML_KEEP;  
                                 h->flags |= HTML_PREKEEP;  
                         }  
                 }                  }
         }          }
   
         if (child && n->child)          if (child && n->child)
                 print_mdoc_nodelist(m, n->child, h);                  print_mdoc_nodelist(meta, n->child, h);
   
         print_stagq(h, t);          print_stagq(h, t);
   
         switch (n->type) {          switch (n->type) {
         case (MDOC_ROOT):          case (MDOC_ROOT):
                 mdoc_root_post(m, n, h);                  mdoc_root_post(meta, n, h);
                 break;                  break;
         case (MDOC_EQN):          case (MDOC_EQN):
                 break;                  break;
         default:          default:
                 if (mdocs[n->tok].post && ENDBODY_NOT == n->end)                  if (mdocs[n->tok].post && ENDBODY_NOT == n->end)
                         (*mdocs[n->tok].post)(m, n, h);                          (*mdocs[n->tok].post)(meta, n, h);
                 break;                  break;
         }          }
 }  }
Line 499  mdoc_root_post(MDOC_ARGS)
Line 497  mdoc_root_post(MDOC_ARGS)
   
         PAIR_SUMMARY_INIT(&tag[0], "Document Footer");          PAIR_SUMMARY_INIT(&tag[0], "Document Footer");
         PAIR_CLASS_INIT(&tag[1], "foot");          PAIR_CLASS_INIT(&tag[1], "foot");
         if (NULL == h->style) {          PAIR_INIT(&tag[2], ATTR_WIDTH, "100%");
                 PAIR_INIT(&tag[2], ATTR_WIDTH, "100%");          t = print_otag(h, TAG_TABLE, 3, tag);
                 t = print_otag(h, TAG_TABLE, 3, tag);          PAIR_INIT(&tag[0], ATTR_WIDTH, "50%");
                 PAIR_INIT(&tag[0], ATTR_WIDTH, "50%");          print_otag(h, TAG_COL, 1, tag);
                 print_otag(h, TAG_COL, 1, tag);          print_otag(h, TAG_COL, 1, tag);
                 print_otag(h, TAG_COL, 1, tag);  
         } else  
                 t = print_otag(h, TAG_TABLE, 2, tag);  
   
         t = print_otag(h, TAG_TBODY, 0, NULL);          print_otag(h, TAG_TBODY, 0, NULL);
   
         tt = print_otag(h, TAG_TR, 0, NULL);          tt = print_otag(h, TAG_TR, 0, NULL);
   
         PAIR_CLASS_INIT(&tag[0], "foot-date");          PAIR_CLASS_INIT(&tag[0], "foot-date");
         print_otag(h, TAG_TD, 1, tag);          print_otag(h, TAG_TD, 1, tag);
           print_text(h, meta->date);
         print_text(h, m->date);  
         print_stagq(h, tt);          print_stagq(h, tt);
   
         PAIR_CLASS_INIT(&tag[0], "foot-os");          PAIR_CLASS_INIT(&tag[0], "foot-os");
         if (NULL == h->style) {          PAIR_INIT(&tag[1], ATTR_ALIGN, "right");
                 PAIR_INIT(&tag[1], ATTR_ALIGN, "right");          print_otag(h, TAG_TD, 2, tag);
                 print_otag(h, TAG_TD, 2, tag);          print_text(h, meta->os);
         } else  
                 print_otag(h, TAG_TD, 1, tag);  
   
         print_text(h, m->os);  
         print_tagq(h, t);          print_tagq(h, t);
 }  }
   
Line 538  mdoc_root_pre(MDOC_ARGS)
Line 528  mdoc_root_pre(MDOC_ARGS)
         struct tag      *t, *tt;          struct tag      *t, *tt;
         char             b[BUFSIZ], title[BUFSIZ];          char             b[BUFSIZ], title[BUFSIZ];
   
         strlcpy(b, m->vol, BUFSIZ);          strlcpy(b, meta->vol, BUFSIZ);
   
         if (m->arch) {          if (meta->arch) {
                 strlcat(b, " (", BUFSIZ);                  strlcat(b, " (", BUFSIZ);
                 strlcat(b, m->arch, BUFSIZ);                  strlcat(b, meta->arch, BUFSIZ);
                 strlcat(b, ")", BUFSIZ);                  strlcat(b, ")", BUFSIZ);
         }          }
   
         snprintf(title, BUFSIZ - 1, "%s(%s)", m->title, m->msec);          snprintf(title, BUFSIZ - 1, "%s(%s)", meta->title, meta->msec);
   
         PAIR_SUMMARY_INIT(&tag[0], "Document Header");          PAIR_SUMMARY_INIT(&tag[0], "Document Header");
         PAIR_CLASS_INIT(&tag[1], "head");          PAIR_CLASS_INIT(&tag[1], "head");
         if (NULL == h->style) {          PAIR_INIT(&tag[2], ATTR_WIDTH, "100%");
                 PAIR_INIT(&tag[2], ATTR_WIDTH, "100%");          t = print_otag(h, TAG_TABLE, 3, tag);
                 t = print_otag(h, TAG_TABLE, 3, tag);          PAIR_INIT(&tag[0], ATTR_WIDTH, "30%");
                 PAIR_INIT(&tag[0], ATTR_WIDTH, "30%");          print_otag(h, TAG_COL, 1, tag);
                 print_otag(h, TAG_COL, 1, tag);          print_otag(h, TAG_COL, 1, tag);
                 print_otag(h, TAG_COL, 1, tag);          print_otag(h, TAG_COL, 1, tag);
                 print_otag(h, TAG_COL, 1, tag);  
         } else  
                 t = print_otag(h, TAG_TABLE, 2, tag);  
   
         print_otag(h, TAG_TBODY, 0, NULL);          print_otag(h, TAG_TBODY, 0, NULL);
   
Line 566  mdoc_root_pre(MDOC_ARGS)
Line 553  mdoc_root_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag[0], "head-ltitle");          PAIR_CLASS_INIT(&tag[0], "head-ltitle");
         print_otag(h, TAG_TD, 1, tag);          print_otag(h, TAG_TD, 1, tag);
   
         print_text(h, title);          print_text(h, title);
         print_stagq(h, tt);          print_stagq(h, tt);
   
         PAIR_CLASS_INIT(&tag[0], "head-vol");          PAIR_CLASS_INIT(&tag[0], "head-vol");
         if (NULL == h->style) {          PAIR_INIT(&tag[1], ATTR_ALIGN, "center");
                 PAIR_INIT(&tag[1], ATTR_ALIGN, "center");          print_otag(h, TAG_TD, 2, tag);
                 print_otag(h, TAG_TD, 2, tag);  
         } else  
                 print_otag(h, TAG_TD, 1, tag);  
   
         print_text(h, b);          print_text(h, b);
         print_stagq(h, tt);          print_stagq(h, tt);
   
         PAIR_CLASS_INIT(&tag[0], "head-rtitle");          PAIR_CLASS_INIT(&tag[0], "head-rtitle");
         if (NULL == h->style) {          PAIR_INIT(&tag[1], ATTR_ALIGN, "right");
                 PAIR_INIT(&tag[1], ATTR_ALIGN, "right");          print_otag(h, TAG_TD, 2, tag);
                 print_otag(h, TAG_TD, 2, tag);  
         } else  
                 print_otag(h, TAG_TD, 1, tag);  
   
         print_text(h, title);          print_text(h, title);
         print_tagq(h, t);          print_tagq(h, t);
         return(1);          return(1);
Line 608  mdoc_sh_pre(MDOC_ARGS)
Line 586  mdoc_sh_pre(MDOC_ARGS)
   
         bufinit(h);          bufinit(h);
         bufcat(h, "x");          bufcat(h, "x");
         for (n = n->child; n; n = n->next) {  
           for (n = n->child; n && MDOC_TEXT == n->type; ) {
                 bufcat_id(h, n->string);                  bufcat_id(h, n->string);
                 if (n->next)                  if (NULL != (n = n->next))
                         bufcat_id(h, " ");                          bufcat_id(h, " ");
         }          }
   
         PAIR_ID_INIT(&tag, h->buf);          if (NULL == n) {
         print_otag(h, TAG_H1, 1, &tag);                  PAIR_ID_INIT(&tag, h->buf);
                   print_otag(h, TAG_H1, 1, &tag);
           } else
                   print_otag(h, TAG_H1, 0, NULL);
   
         return(1);          return(1);
 }  }
   
   
 /* ARGSUSED */  /* ARGSUSED */
 static int  static int
 mdoc_ss_pre(MDOC_ARGS)  mdoc_ss_pre(MDOC_ARGS)
Line 635  mdoc_ss_pre(MDOC_ARGS)
Line 617  mdoc_ss_pre(MDOC_ARGS)
   
         bufinit(h);          bufinit(h);
         bufcat(h, "x");          bufcat(h, "x");
         for (n = n->child; n; n = n->next) {  
           for (n = n->child; n && MDOC_TEXT == n->type; ) {
                 bufcat_id(h, n->string);                  bufcat_id(h, n->string);
                 if (n->next)                  if (NULL != (n = n->next))
                         bufcat_id(h, " ");                          bufcat_id(h, " ");
         }          }
   
         PAIR_ID_INIT(&tag, h->buf);          if (NULL == n) {
         print_otag(h, TAG_H2, 1, &tag);                  PAIR_ID_INIT(&tag, h->buf);
                   print_otag(h, TAG_H2, 1, &tag);
           } else
                   print_otag(h, TAG_H2, 0, NULL);
   
         return(1);          return(1);
 }  }
   
Line 702  mdoc_nm_pre(MDOC_ARGS)
Line 689  mdoc_nm_pre(MDOC_ARGS)
                 synopsis_pre(h, n);                  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 && m->name)                  if (NULL == n->child && meta->name)
                         print_text(h, m->name);                          print_text(h, meta->name);
                 return(1);                  return(1);
         case (MDOC_HEAD):          case (MDOC_HEAD):
                 print_otag(h, TAG_TD, 0, NULL);                  print_otag(h, TAG_TD, 0, NULL);
                 if (NULL == n->child && m->name)                  if (NULL == n->child && meta->name)
                         print_text(h, m->name);                          print_text(h, meta->name);
                 return(1);                  return(1);
         case (MDOC_BODY):          case (MDOC_BODY):
                 print_otag(h, TAG_TD, 0, NULL);                  print_otag(h, TAG_TD, 0, NULL);
Line 725  mdoc_nm_pre(MDOC_ARGS)
Line 712  mdoc_nm_pre(MDOC_ARGS)
                 if (MDOC_TEXT == n->type)                  if (MDOC_TEXT == n->type)
                         len += html_strlen(n->string);                          len += html_strlen(n->string);
   
         if (0 == len && m->name)          if (0 == len && meta->name)
                 len = html_strlen(m->name);                  len = html_strlen(meta->name);
   
         SCALE_HS_INIT(&su, (double)len);          SCALE_HS_INIT(&su, (double)len);
         bufinit(h);          bufinit(h);
Line 994  mdoc_bl_pre(MDOC_ARGS)
Line 981  mdoc_bl_pre(MDOC_ARGS)
         struct roffsu    su;          struct roffsu    su;
         char             buf[BUFSIZ];          char             buf[BUFSIZ];
   
         bufinit(h);  
   
         if (MDOC_BODY == n->type) {          if (MDOC_BODY == n->type) {
                 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);
Line 1014  mdoc_bl_pre(MDOC_ARGS)
Line 999  mdoc_bl_pre(MDOC_ARGS)
                  */                   */
   
                 for (i = 0; i < (int)n->norm->Bl.ncols; i++) {                  for (i = 0; i < (int)n->norm->Bl.ncols; i++) {
                           bufinit(h);
                         a2width(n->norm->Bl.cols[i], &su);                          a2width(n->norm->Bl.cols[i], &su);
                         if (i < (int)n->norm->Bl.ncols - 1)                          if (i < (int)n->norm->Bl.ncols - 1)
                                 bufcat_su(h, "width", &su);                                  bufcat_su(h, "width", &su);
Line 1027  mdoc_bl_pre(MDOC_ARGS)
Line 1013  mdoc_bl_pre(MDOC_ARGS)
         }          }
   
         SCALE_VS_INIT(&su, 0);          SCALE_VS_INIT(&su, 0);
           bufinit(h);
         bufcat_su(h, "margin-top", &su);          bufcat_su(h, "margin-top", &su);
         bufcat_su(h, "margin-bottom", &su);          bufcat_su(h, "margin-bottom", &su);
         PAIR_STYLE_INIT(&tag[0], h);          PAIR_STYLE_INIT(&tag[0], h);
Line 1171  mdoc_sx_pre(MDOC_ARGS)
Line 1158  mdoc_sx_pre(MDOC_ARGS)
   
         bufinit(h);          bufinit(h);
         bufcat(h, "#x");          bufcat(h, "#x");
         for (n = n->child; n; n = n->next) {  
           for (n = n->child; n; ) {
                 bufcat_id(h, n->string);                  bufcat_id(h, n->string);
                 if (n->next)                  if (NULL != (n = n->next))
                         bufcat_id(h, " ");                          bufcat_id(h, " ");
         }          }
   
Line 1237  mdoc_bd_pre(MDOC_ARGS)
Line 1225  mdoc_bd_pre(MDOC_ARGS)
         h->flags |= HTML_LITERAL;          h->flags |= HTML_LITERAL;
   
         for (nn = n->child; nn; nn = nn->next) {          for (nn = n->child; nn; nn = nn->next) {
                 print_mdoc_node(m, nn, h);                  print_mdoc_node(meta, nn, h);
                 /*                  /*
                  * 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 1614  mdoc_sm_pre(MDOC_ARGS)
Line 1602  mdoc_sm_pre(MDOC_ARGS)
   
 /* ARGSUSED */  /* ARGSUSED */
 static int  static int
   mdoc_ll_pre(MDOC_ARGS)
   {
   
           return(0);
   }
   
   /* ARGSUSED */
   static int
 mdoc_pp_pre(MDOC_ARGS)  mdoc_pp_pre(MDOC_ARGS)
 {  {
   
         print_otag(h, TAG_P, 0, NULL);          print_otag(h, TAG_P, 0, NULL);
         return(0);          return(0);
   
 }  }
   
 /* ARGSUSED */  /* ARGSUSED */
Line 1984  mdoc_li_pre(MDOC_ARGS)
Line 1979  mdoc_li_pre(MDOC_ARGS)
         struct htmlpair tag;          struct htmlpair tag;
   
         PAIR_CLASS_INIT(&tag, "lit");          PAIR_CLASS_INIT(&tag, "lit");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_CODE, 1, &tag);
         return(1);          return(1);
 }  }
   
Line 2197  mdoc_quote_pre(MDOC_ARGS)
Line 2192  mdoc_quote_pre(MDOC_ARGS)
                 PAIR_CLASS_INIT(&tag, "opt");                  PAIR_CLASS_INIT(&tag, "opt");
                 print_otag(h, TAG_SPAN, 1, &tag);                  print_otag(h, TAG_SPAN, 1, &tag);
                 break;                  break;
           case (MDOC_Eo):
                   break;
         case (MDOC_Do):          case (MDOC_Do):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Dq):          case (MDOC_Dq):
Line 2212  mdoc_quote_pre(MDOC_ARGS)
Line 2209  mdoc_quote_pre(MDOC_ARGS)
                 print_text(h, "(");                  print_text(h, "(");
                 break;                  break;
         case (MDOC_Ql):          case (MDOC_Ql):
                 /* FALLTHROUGH */                  print_text(h, "\\(oq");
                   h->flags |= HTML_NOSPACE;
                   PAIR_CLASS_INIT(&tag, "lit");
                   print_otag(h, TAG_CODE, 1, &tag);
                   break;
         case (MDOC_So):          case (MDOC_So):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Sq):          case (MDOC_Sq):
Line 2258  mdoc_quote_post(MDOC_ARGS)
Line 2259  mdoc_quote_post(MDOC_ARGS)
         case (MDOC_Bq):          case (MDOC_Bq):
                 print_text(h, "\\(rB");                  print_text(h, "\\(rB");
                 break;                  break;
           case (MDOC_Eo):
                   break;
         case (MDOC_Qo):          case (MDOC_Qo):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Qq):          case (MDOC_Qq):
Line 2277  mdoc_quote_post(MDOC_ARGS)
Line 2280  mdoc_quote_post(MDOC_ARGS)
         case (MDOC_So):          case (MDOC_So):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Sq):          case (MDOC_Sq):
                 print_text(h, "\\(aq");                  print_text(h, "\\(cq");
                 break;                  break;
         default:          default:
                 abort();                  abort();

Legend:
Removed from v.1.174  
changed lines
  Added in v.1.187

CVSweb