=================================================================== RCS file: /cvs/mandoc/mdoc_html.c,v retrieving revision 1.29 retrieving revision 1.35 diff -u -p -r1.29 -r1.35 --- mandoc/mdoc_html.c 2009/10/13 10:57:25 1.29 +++ mandoc/mdoc_html.c 2009/10/20 05:45:21 1.35 @@ -1,4 +1,4 @@ -/* $Id: mdoc_html.c,v 1.29 2009/10/13 10:57:25 kristaps Exp $ */ +/* $Id: mdoc_html.c,v 1.35 2009/10/20 05:45:21 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -327,10 +327,10 @@ static void a2width(const char *p, struct roffsu *su) { - if (a2roffsu(p, su)) - return; - su->unit = SCALE_EM; - su->scale = (int)strlen(p); + if ( ! a2roffsu(p, su, SCALE_MAX)) { + su->unit = SCALE_EM; + su->scale = (int)strlen(p); + } } @@ -343,13 +343,15 @@ static void a2offs(const char *p, struct roffsu *su) { + /* FIXME: "right"? */ + if (0 == strcmp(p, "left")) SCALE_HS_INIT(su, 0); else if (0 == strcmp(p, "indent")) SCALE_HS_INIT(su, INDENT); else if (0 == strcmp(p, "indent-two")) SCALE_HS_INIT(su, INDENT * 2); - else if ( ! a2roffsu(p, su)) { + else if ( ! a2roffsu(p, su, SCALE_MAX)) { su->unit = SCALE_EM; su->scale = (int)strlen(p); } @@ -1066,6 +1068,8 @@ mdoc_it_pre(MDOC_ARGS) /* Override width in some cases. */ switch (type) { + case (MDOC_Item): + /* FALLTHROUGH */ case (MDOC_Inset): /* FALLTHROUGH */ case (MDOC_Diag): @@ -1270,6 +1274,8 @@ mdoc_d1_pre(MDOC_ARGS) if (MDOC_BLOCK != n->type) return(1); + /* FIXME: D1 shouldn't be literal. */ + SCALE_VS_INIT(&su, INDENT - 2); bufcat_su(h, "margin-left", &su); PAIR_CLASS_INIT(&tag[0], "lit"); @@ -1285,20 +1291,20 @@ mdoc_sx_pre(MDOC_ARGS) { struct htmlpair tag[2]; const struct mdoc_node *nn; - char lbuf[BUFSIZ]; + char buf[BUFSIZ]; /* FIXME: duplicates? */ - (void)strlcpy(lbuf, "#", BUFSIZ); + (void)strlcpy(buf, "#", BUFSIZ); for (nn = n->child; nn; nn = nn->next) { - (void)strlcat(lbuf, nn->string, BUFSIZ); + (void)strlcat(buf, nn->string, BUFSIZ); if (nn->next) - (void)strlcat(lbuf, "_", BUFSIZ); + (void)strlcat(buf, "_", BUFSIZ); } PAIR_CLASS_INIT(&tag[0], "link-sec"); tag[1].key = ATTR_HREF; - tag[1].val = lbuf; + tag[1].val = buf; print_otag(h, TAG_A, 2, tag); return(1); @@ -1357,6 +1363,8 @@ mdoc_bd_pre(MDOC_ARGS) case (MDOC_Compact): comp = 1; break; + case (MDOC_Centred): + /* FALLTHROUGH */ case (MDOC_Ragged): /* FALLTHROUGH */ case (MDOC_Filled): @@ -1366,8 +1374,12 @@ mdoc_bd_pre(MDOC_ARGS) case (MDOC_Literal): type = bl->args->argv[i].arg; break; + default: + break; } + /* FIXME: -centered, etc. formatting. */ + if (MDOC_BLOCK == n->type) { bufcat_su(h, "margin-left", &su); for (nn = n; nn && ! comp; nn = nn->parent) { @@ -1831,6 +1843,8 @@ mdoc_in_pre(MDOC_ARGS) } else print_otag(h, TAG_DIV, 0, NULL); } + + /* FIXME: there's a buffer bug in here somewhere. */ PAIR_CLASS_INIT(&tag[0], "includes"); print_otag(h, TAG_SPAN, 1, tag);