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

Diff for /mandoc/html.c between version 1.158 and 1.159

version 1.158, 2014/07/22 22:41:35 version 1.159, 2014/07/23 15:00:08
Line 110  static const char *const roffscales[SCALE_MAX] = {
Line 110  static const char *const roffscales[SCALE_MAX] = {
   
 static  void     bufncat(struct html *, const char *, size_t);  static  void     bufncat(struct html *, const char *, size_t);
 static  void     print_ctag(struct html *, enum htmltag);  static  void     print_ctag(struct html *, enum htmltag);
   static  int      print_escape(char);
 static  int      print_encode(struct html *, const char *, int);  static  int      print_encode(struct html *, const char *, int);
 static  void     print_metaf(struct html *, enum mandoc_esc);  static  void     print_metaf(struct html *, enum mandoc_esc);
 static  void     print_attr(struct html *, const char *, const char *);  static  void     print_attr(struct html *, const char *, const char *);
Line 324  html_strlen(const char *cp)
Line 325  html_strlen(const char *cp)
 }  }
   
 static int  static int
   print_escape(char c)
   {
   
           switch (c) {
           case '<':
                   printf("&lt;");
                   break;
           case '>':
                   printf("&gt;");
                   break;
           case '&':
                   printf("&amp;");
                   break;
           case '"':
                   printf("&quot;");
                   break;
           case ASCII_NBRSP:
                   putchar('-');
                   break;
           case ASCII_HYPH:
                   putchar('-');
                   /* FALLTHROUGH */
           case ASCII_BREAK:
                   break;
           default:
                   return(0);
           }
           return(1);
   }
   
   static int
 print_encode(struct html *h, const char *p, int norecurse)  print_encode(struct html *h, const char *p, int norecurse)
 {  {
         size_t           sz;          size_t           sz;
Line 350  print_encode(struct html *h, const char *p, int norecu
Line 382  print_encode(struct html *h, const char *p, int norecu
                 if ('\0' == *p)                  if ('\0' == *p)
                         break;                          break;
   
                 switch (*p++) {                  if (print_escape(*p++))
                 case '<':  
                         printf("&lt;");  
                         continue;                          continue;
                 case '>':  
                         printf("&gt;");  
                         continue;  
                 case '&':  
                         printf("&amp;");  
                         continue;  
                 case '"':  
                         printf("&quot;");  
                         continue;  
                 case ASCII_NBRSP:  
                         putchar('-');  
                         continue;  
                 case ASCII_HYPH:  
                         putchar('-');  
                         /* FALLTHROUGH */  
                 case ASCII_BREAK:  
                         continue;  
                 default:  
                         break;  
                 }  
   
                 esc = mandoc_escape(&p, &seq, &len);                  esc = mandoc_escape(&p, &seq, &len);
                 if (ESCAPE_ERROR == esc)                  if (ESCAPE_ERROR == esc)
Line 408  print_encode(struct html *h, const char *p, int norecu
Line 418  print_encode(struct html *h, const char *p, int norecu
   
                 switch (esc) {                  switch (esc) {
                 case ESCAPE_UNICODE:                  case ESCAPE_UNICODE:
                         /* Skip passed "u" header. */                          /* Skip past "u" header. */
                         c = mchars_num2uc(seq + 1, len - 1);                          c = mchars_num2uc(seq + 1, len - 1);
                         if ('\0' != c)                          if ('\0' != c)
                                 printf("&#x%x;", c);                                  printf("&#x%x;", c);
                         break;                          break;
                 case ESCAPE_NUMBERED:                  case ESCAPE_NUMBERED:
                         c = mchars_num2char(seq, len);                          c = mchars_num2char(seq, len);
                         if ('\0' != c)                          if ( ! ('\0' == c || print_escape(c)))
                                 putchar(c);                                  putchar(c);
                         break;                          break;
                 case ESCAPE_SPECIAL:                  case ESCAPE_SPECIAL:
                         c = mchars_spec2cp(h->symtab, seq, len);                          c = mchars_spec2cp(h->symtab, seq, len);
                         if (c > 0)                          if (c > 0)
                                 printf("&#%d;", c);                                  printf("&#%d;", c);
                         else if (-1 == c && 1 == len)                          else if (-1 == c && 1 == len &&
                               !print_escape(*seq))
                                 putchar((int)*seq);                                  putchar((int)*seq);
                         break;                          break;
                 case ESCAPE_NOSPACE:                  case ESCAPE_NOSPACE:

Legend:
Removed from v.1.158  
changed lines
  Added in v.1.159

CVSweb