[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.17 and 1.18

version 1.17, 2009/10/03 15:26:26 version 1.18, 2009/10/03 16:36:06
Line 21 
Line 21 
 #include <assert.h>  #include <assert.h>
 #include <ctype.h>  #include <ctype.h>
 #include <err.h>  #include <err.h>
 #include <stdarg.h>  
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
Line 54  static int    a2width(const char *);
Line 53  static int    a2width(const char *);
 static  int               a2offs(const char *);  static  int               a2offs(const char *);
 static  int               a2list(const struct mdoc_node *);  static  int               a2list(const struct mdoc_node *);
   
 static  void              buffmt_man(struct html *,  
                                 const char *, const char *);  
 static  void              buffmt_includes(struct html *, const char *);  
 static  void              buffmt(struct html *, const char *, ...);  
 static  void              bufcat(struct html *, const char *);  
 static  void              bufncat(struct html *, const char *, size_t);  
   
   
 static  void              mdoc_root_post(MDOC_ARGS);  static  void              mdoc_root_post(MDOC_ARGS);
 static  int               mdoc_root_pre(MDOC_ARGS);  static  int               mdoc_root_pre(MDOC_ARGS);
 static  int               mdoc_tbl_pre(MDOC_ARGS, int);  static  int               mdoc_tbl_pre(MDOC_ARGS, int);
Line 282  html_mdoc(void *arg, const struct mdoc *m)
Line 273  html_mdoc(void *arg, const struct mdoc *m)
 }  }
   
   
 static void  
 bufinit(struct html *h)  
 {  
   
         h->buf[0] = '\0';  
         h->buflen = 0;  
 }  
   
   
 static void  
 bufcat(struct html *h, const char *p)  
 {  
   
         bufncat(h, p, strlen(p));  
 }  
   
   
 static void  
 buffmt(struct html *h, const char *fmt, ...)  
 {  
         va_list          ap;  
   
         va_start(ap, fmt);  
         (void)vsnprintf(h->buf + h->buflen,  
                         BUFSIZ - h->buflen - 1, fmt, ap);  
         va_end(ap);  
         h->buflen = strlen(h->buf);  
         assert('\0' == h->buf[h->buflen]);  
 }  
   
   
 static void  
 bufncat(struct html *h, const char *p, size_t sz)  
 {  
   
         if (h->buflen + sz > BUFSIZ - 1)  
                 sz = BUFSIZ - 1 - h->buflen;  
   
         (void)strncat(h->buf, p, sz);  
         h->buflen += sz;  
         assert('\0' == h->buf[h->buflen]);  
 }  
   
   
 static void  
 buffmt_includes(struct html *h, const char *name)  
 {  
         const char      *p, *pp;  
   
         pp = h->base_includes;  
         while ((p = strchr(pp, '%'))) {  
                 bufncat(h, pp, p - pp);  
                 switch (*(p + 1)) {  
                 case('I'):  
                         bufcat(h, name);  
                         break;  
                 default:  
                         bufncat(h, p, 2);  
                         break;  
                 }  
                 pp = p + 2;  
         }  
         if (pp)  
                 bufcat(h, pp);  
 }  
   
   
 static void  
 buffmt_man(struct html *h,  
                 const char *name, const char *sec)  
 {  
         const char      *p, *pp;  
   
         pp = h->base_man;  
         while ((p = strchr(pp, '%'))) {  
                 bufncat(h, pp, p - pp);  
                 switch (*(p + 1)) {  
                 case('S'):  
                         bufcat(h, sec);  
                         break;  
                 case('N'):  
                         buffmt(h, name ? name : "1");  
                         break;  
                 default:  
                         bufncat(h, p, 2);  
                         break;  
                 }  
                 pp = p + 2;  
         }  
         if (pp)  
                 bufcat(h, pp);  
 }  
   
   
 static int  static int
 a2list(const struct mdoc_node *n)  a2list(const struct mdoc_node *n)
 {  {
Line 1375  mdoc_d1_pre(MDOC_ARGS)
Line 1272  mdoc_d1_pre(MDOC_ARGS)
 static int  static int
 mdoc_sx_pre(MDOC_ARGS)  mdoc_sx_pre(MDOC_ARGS)
 {  {
         struct htmlpair          tag[3];          struct htmlpair          tag[2];
         const struct mdoc_node  *nn;          const struct mdoc_node  *nn;
   
         bufcat(h, "#");          bufcat(h, "#");
Line 1389  mdoc_sx_pre(MDOC_ARGS)
Line 1286  mdoc_sx_pre(MDOC_ARGS)
         tag[0].val = h->buf;          tag[0].val = h->buf;
         tag[1].key = ATTR_CLASS;          tag[1].key = ATTR_CLASS;
         tag[1].val = "link-sec";          tag[1].val = "link-sec";
         tag[2].key = ATTR_TARGET;  
         tag[2].val = "_self";  
   
         print_otag(h, TAG_A, 3, tag);          print_otag(h, TAG_A, 2, tag);
         return(1);          return(1);
 }  }
   

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.18

CVSweb