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

Diff for /mandoc/html.c between version 1.245 and 1.249

version 1.245, 2018/12/04 18:29:38 version 1.249, 2019/01/06 04:55:09
Line 1 
Line 1 
 /*      $Id$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011-2015, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2011-2015, 2017-2019 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 78  static const struct htmldata htmltags[TAG_MAX] = {
Line 78  static const struct htmldata htmltags[TAG_MAX] = {
         {"dl",          HTML_NLALL | HTML_INDENT},          {"dl",          HTML_NLALL | HTML_INDENT},
         {"dt",          HTML_NLAROUND},          {"dt",          HTML_NLAROUND},
         {"dd",          HTML_NLAROUND | HTML_INDENT},          {"dd",          HTML_NLAROUND | HTML_INDENT},
           {"p",           HTML_NLAROUND | HTML_INDENT},
         {"pre",         HTML_NLALL | HTML_NOINDENT},          {"pre",         HTML_NLALL | HTML_NOINDENT},
         {"var",         0},          {"var",         0},
         {"cite",        0},          {"cite",        0},
Line 117  static void  print_ctag(struct html *, struct tag *);
Line 118  static void  print_ctag(struct html *, struct tag *);
 static  int      print_escape(struct html *, char);  static  int      print_escape(struct html *, char);
 static  int      print_encode(struct html *, const char *, const char *, int);  static  int      print_encode(struct html *, const char *, const char *, int);
 static  void     print_href(struct html *, const char *, const char *, int);  static  void     print_href(struct html *, const char *, const char *, int);
 static  void     print_metaf(struct html *, enum mandoc_esc);  
   
   
 void *  void *
Line 210  print_gen_head(struct html *h)
Line 210  print_gen_head(struct html *h)
         print_tagq(h, t);          print_tagq(h, t);
 }  }
   
 static void  void
 print_metaf(struct html *h, enum mandoc_esc deco)  print_metaf(struct html *h, enum mandoc_esc deco)
 {  {
         enum htmlfont    font;          enum htmlfont    font;
Line 236  print_metaf(struct html *h, enum mandoc_esc deco)
Line 236  print_metaf(struct html *h, enum mandoc_esc deco)
                 font = HTMLFONT_NONE;                  font = HTMLFONT_NONE;
                 break;                  break;
         default:          default:
                 abort();                  return;
         }          }
   
         if (h->metaf) {          if (h->metaf) {
Line 266  print_metaf(struct html *h, enum mandoc_esc deco)
Line 266  print_metaf(struct html *h, enum mandoc_esc deco)
         }          }
 }  }
   
   void
   html_close_paragraph(struct html *h)
   {
           struct tag      *t;
   
           for (t = h->tag; t != NULL; t = t->next) {
                   if (t->tag == TAG_P) {
                           print_tagq(h, t);
                           break;
                   }
           }
   }
   
   /*
    * ROFF_nf switches to no-fill mode, ROFF_fi to fill mode.
    * TOKEN_NONE does not switch.  The old mode is returned.
    */
   enum roff_tok
   html_fillmode(struct html *h, enum roff_tok want)
   {
           struct tag      *t;
           enum roff_tok    had;
   
           for (t = h->tag; t != NULL; t = t->next)
                   if (t->tag == TAG_PRE)
                           break;
   
           had = t == NULL ? ROFF_fi : ROFF_nf;
   
           if (want != had) {
                   switch (want) {
                   case ROFF_fi:
                           print_tagq(h, t);
                           break;
                   case ROFF_nf:
                           html_close_paragraph(h);
                           print_otag(h, TAG_PRE, "");
                           break;
                   case TOKEN_NONE:
                           break;
                   default:
                           abort();
                   }
           }
           return had;
   }
   
 char *  char *
 html_make_id(const struct roff_node *n, int unique)  html_make_id(const struct roff_node *n, int unique)
 {  {
Line 402  print_encode(struct html *h, const char *p, const char
Line 449  print_encode(struct html *h, const char *p, const char
                         continue;                          continue;
   
                 esc = mandoc_escape(&p, &seq, &len);                  esc = mandoc_escape(&p, &seq, &len);
                 if (ESCAPE_ERROR == esc)  
                         break;  
   
                 switch (esc) {                  switch (esc) {
                 case ESCAPE_FONT:                  case ESCAPE_FONT:
                 case ESCAPE_FONTPREV:                  case ESCAPE_FONTPREV:
Line 422  print_encode(struct html *h, const char *p, const char
Line 466  print_encode(struct html *h, const char *p, const char
                 case ESCAPE_SKIPCHAR:                  case ESCAPE_SKIPCHAR:
                         h->flags |= HTML_SKIPCHAR;                          h->flags |= HTML_SKIPCHAR;
                         continue;                          continue;
                   case ESCAPE_ERROR:
                           continue;
                 default:                  default:
                         break;                          break;
                 }                  }
Line 445  print_encode(struct html *h, const char *p, const char
Line 491  print_encode(struct html *h, const char *p, const char
                         c = mchars_spec2cp(seq, len);                          c = mchars_spec2cp(seq, len);
                         if (c <= 0)                          if (c <= 0)
                                 continue;                                  continue;
                           break;
                   case ESCAPE_UNDEF:
                           c = *seq;
                         break;                          break;
                 case ESCAPE_DEVICE:                  case ESCAPE_DEVICE:
                         print_word(h, "html");                          print_word(h, "html");

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

CVSweb