]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc_html.c
Fix a typo that caused a non-constant string
[mandoc.git] / mdoc_html.c
index 5cbf68aa8f125f5fa6e575733e6389d495302612..0b4b9adf34f286d045f8ddf32ca21e1abc910c1d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_html.c,v 1.289 2017/05/30 16:31:29 schwarze Exp $ */
+/*     $Id: mdoc_html.c,v 1.294 2017/07/15 17:57:51 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2014, 2015, 2016, 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -27,6 +27,7 @@
 #include <unistd.h>
 
 #include "mandoc_aux.h"
+#include "mandoc.h"
 #include "roff.h"
 #include "mdoc.h"
 #include "out.h"
@@ -714,10 +715,7 @@ mdoc_it_pre(MDOC_ARGS)
                case ROFFT_HEAD:
                        return 0;
                case ROFFT_BODY:
-                       if (bl->norm->Bl.comp)
-                               print_otag(h, TAG_LI, "csvt", cattr, 0);
-                       else
-                               print_otag(h, TAG_LI, "c", cattr);
+                       print_otag(h, TAG_LI, "c", cattr);
                        break;
                default:
                        break;
@@ -729,15 +727,12 @@ mdoc_it_pre(MDOC_ARGS)
        case LIST_ohang:
                switch (n->type) {
                case ROFFT_HEAD:
-                       if (bl->norm->Bl.comp)
-                               print_otag(h, TAG_DT, "csvt", cattr, 0);
-                       else
-                               print_otag(h, TAG_DT, "c", cattr);
+                       print_otag(h, TAG_DT, "c", cattr);
                        if (type == LIST_diag)
                                print_otag(h, TAG_B, "c", cattr);
                        break;
                case ROFFT_BODY:
-                       print_otag(h, TAG_DD, "cswl", cattr,
+                       print_otag(h, TAG_DD, "csw*+l", cattr,
                            bl->norm->Bl.width);
                        break;
                default:
@@ -751,7 +746,7 @@ mdoc_it_pre(MDOC_ARGS)
                            (n->parent->prev == NULL ||
                             n->parent->prev->body == NULL ||
                             n->parent->prev->body->child != NULL)) {
-                               t = print_otag(h, TAG_DT, "csw+-l",
+                               t = print_otag(h, TAG_DT, "csw*+-l",
                                    cattr, bl->norm->Bl.width);
                                print_text(h, "\\ ");
                                print_tagq(h, t);
@@ -759,7 +754,7 @@ mdoc_it_pre(MDOC_ARGS)
                                print_text(h, "\\ ");
                                print_tagq(h, t);
                        }
-                       print_otag(h, TAG_DT, "csw+-l", cattr,
+                       print_otag(h, TAG_DT, "csw*+-l", cattr,
                            bl->norm->Bl.width);
                        break;
                case ROFFT_BODY:
@@ -779,10 +774,7 @@ mdoc_it_pre(MDOC_ARGS)
                case ROFFT_HEAD:
                        break;
                case ROFFT_BODY:
-                       if (bl->norm->Bl.comp)
-                               print_otag(h, TAG_TD, "csvt", cattr, 0);
-                       else
-                               print_otag(h, TAG_TD, "c", cattr);
+                       print_otag(h, TAG_TD, "c", cattr);
                        break;
                default:
                        print_otag(h, TAG_TR, "c", cattr);
@@ -797,9 +789,9 @@ mdoc_it_pre(MDOC_ARGS)
 static int
 mdoc_bl_pre(MDOC_ARGS)
 {
+       char             cattr[21];
        struct tag      *t;
        struct mdoc_bl  *bl;
-       const char      *cattr;
        size_t           i;
        enum htmltag     elemtype;
 
@@ -834,50 +826,52 @@ mdoc_bl_pre(MDOC_ARGS)
        switch (bl->type) {
        case LIST_bullet:
                elemtype = TAG_UL;
-               cattr = "Bl-bullet";
+               (void)strlcpy(cattr, "Bl-bullet", sizeof(cattr));
                break;
        case LIST_dash:
        case LIST_hyphen:
                elemtype = TAG_UL;
-               cattr = "Bl-dash";
+               (void)strlcpy(cattr, "Bl-dash", sizeof(cattr));
                break;
        case LIST_item:
                elemtype = TAG_UL;
-               cattr = "Bl-item";
+               (void)strlcpy(cattr, "Bl-item", sizeof(cattr));
                break;
        case LIST_enum:
                elemtype = TAG_OL;
-               cattr = "Bl-enum";
+               (void)strlcpy(cattr, "Bl-enum", sizeof(cattr));
                break;
        case LIST_diag:
                elemtype = TAG_DL;
-               cattr = "Bl-diag";
+               (void)strlcpy(cattr, "Bl-diag", sizeof(cattr));
                break;
        case LIST_hang:
                elemtype = TAG_DL;
-               cattr = "Bl-hang";
+               (void)strlcpy(cattr, "Bl-hang", sizeof(cattr));
                break;
        case LIST_inset:
                elemtype = TAG_DL;
-               cattr = "Bl-inset";
+               (void)strlcpy(cattr, "Bl-inset", sizeof(cattr));
                break;
        case LIST_ohang:
                elemtype = TAG_DL;
-               cattr = "Bl-ohang";
+               (void)strlcpy(cattr, "Bl-ohang", sizeof(cattr));
                break;
        case LIST_tag:
-               cattr = "Bl-tag";
                if (bl->offs)
-                       print_otag(h, TAG_DIV, "cswl", cattr, bl->offs);
-               print_otag(h, TAG_DL, "csw+l", cattr, bl->width);
+                       print_otag(h, TAG_DIV, "cswl", "Bl-tag", bl->offs);
+               print_otag(h, TAG_DL, "csw*+l", bl->comp ?
+                   "Bl-tag Bl-compact" : "Bl-tag", bl->width);
                return 1;
        case LIST_column:
                elemtype = TAG_TABLE;
-               cattr = "Bl-column";
+               (void)strlcpy(cattr, "Bl-column", sizeof(cattr));
                break;
        default:
                abort();
        }
+       if (bl->comp)
+               (void)strlcat(cattr, " Bl-compact", sizeof(cattr));
        print_otag(h, elemtype, "cswl", cattr, bl->offs);
        return 1;
 }
@@ -1322,12 +1316,16 @@ mdoc_lk_pre(MDOC_ARGS)
        punct = punct->next;
 
        /* Link target and link text. */
+       descr = link->next;
+       if (descr == punct)
+               descr = link;  /* no text */
        t = print_otag(h, TAG_A, "cTh", "Lk", link->string);
-       for (descr = link->next; descr != punct; descr = descr->next) {
+       do {
                if (descr->flags & (NODE_DELIMC | NODE_DELIMO))
                        h->flags |= HTML_NOSPACE;
                print_text(h, descr->string);
-       }
+               descr = descr->next;
+       } while (descr != punct);
        print_tagq(h, t);
 
        /* Trailing punctuation. */