version 1.50, 2010/01/01 13:17:58 |
version 1.56, 2010/04/03 14:25:12 |
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
*/ |
*/ |
|
#ifdef HAVE_CONFIG_H |
|
#include "config.h" |
|
#endif |
|
|
#include <sys/types.h> |
#include <sys/types.h> |
#include <sys/param.h> |
|
|
|
#include <assert.h> |
#include <assert.h> |
#include <ctype.h> |
#include <ctype.h> |
|
|
const struct mdoc_node *n, \ |
const struct mdoc_node *n, \ |
struct html *h |
struct html *h |
|
|
|
#ifndef MIN |
|
#define MIN(a,b) ((/*CONSTCOND*/(a)<(b))?(a):(b)) |
|
#endif |
|
|
struct htmlmdoc { |
struct htmlmdoc { |
int (*pre)(MDOC_ARGS); |
int (*pre)(MDOC_ARGS); |
void (*post)(MDOC_ARGS); |
void (*post)(MDOC_ARGS); |
Line 126 static int mdoc_vt_pre(MDOC_ARGS); |
|
Line 133 static int mdoc_vt_pre(MDOC_ARGS); |
|
static int mdoc_xr_pre(MDOC_ARGS); |
static int mdoc_xr_pre(MDOC_ARGS); |
static int mdoc_xx_pre(MDOC_ARGS); |
static int mdoc_xx_pre(MDOC_ARGS); |
|
|
#ifdef __linux__ |
|
extern size_t strlcpy(char *, const char *, size_t); |
|
extern size_t strlcat(char *, const char *, size_t); |
|
#endif |
|
|
|
static const struct htmlmdoc mdocs[MDOC_MAX] = { |
static const struct htmlmdoc mdocs[MDOC_MAX] = { |
{mdoc_ap_pre, NULL}, /* Ap */ |
{mdoc_ap_pre, NULL}, /* Ap */ |
{NULL, NULL}, /* Dd */ |
{NULL, NULL}, /* Dd */ |
Line 198 static const struct htmlmdoc mdocs[MDOC_MAX] = { |
|
Line 200 static const struct htmlmdoc mdocs[MDOC_MAX] = { |
|
{NULL, NULL}, /* Dc */ |
{NULL, NULL}, /* Dc */ |
{mdoc_dq_pre, mdoc_dq_post}, /* Do */ |
{mdoc_dq_pre, mdoc_dq_post}, /* Do */ |
{mdoc_dq_pre, mdoc_dq_post}, /* Dq */ |
{mdoc_dq_pre, mdoc_dq_post}, /* Dq */ |
{NULL, NULL}, /* Ec */ |
{NULL, NULL}, /* Ec */ /* FIXME: no space */ |
{NULL, NULL}, /* Ef */ |
{NULL, NULL}, /* Ef */ |
{mdoc_em_pre, NULL}, /* Em */ |
{mdoc_em_pre, NULL}, /* Em */ |
{NULL, NULL}, /* Eo */ |
{NULL, NULL}, /* Eo */ |
Line 264 html_mdoc(void *arg, const struct mdoc *m) |
|
Line 266 html_mdoc(void *arg, const struct mdoc *m) |
|
|
|
h = (struct html *)arg; |
h = (struct html *)arg; |
|
|
print_gen_doctype(h); |
print_gen_decls(h); |
t = print_otag(h, TAG_HTML, 0, NULL); |
t = print_otag(h, TAG_HTML, 0, NULL); |
print_mdoc(mdoc_meta(m), mdoc_node(m), h); |
print_mdoc(mdoc_meta(m), mdoc_node(m), h); |
print_tagq(h, t); |
print_tagq(h, t); |
Line 659 mdoc_fl_pre(MDOC_ARGS) |
|
Line 661 mdoc_fl_pre(MDOC_ARGS) |
|
{ |
{ |
struct htmlpair tag; |
struct htmlpair tag; |
|
|
|
PAIR_CLASS_INIT(&tag, "flag"); |
|
print_otag(h, TAG_SPAN, 1, &tag); |
|
|
/* `Cm' has no leading hyphen. */ |
/* `Cm' has no leading hyphen. */ |
|
|
if (MDOC_Cm == n->tok) { |
if (MDOC_Cm == n->tok) |
PAIR_CLASS_INIT(&tag, "flag"); |
|
print_otag(h, TAG_SPAN, 1, &tag); |
|
return(1); |
return(1); |
} |
|
|
|
/* A zero-length child shouldn't get a dash. */ |
|
|
|
if (n->child) { |
|
assert(MDOC_TEXT == n->child->type); |
|
assert(n->child->string); |
|
if ('\0' == *n->child->string) |
|
return(0); |
|
} |
|
|
|
PAIR_CLASS_INIT(&tag, "flag"); |
|
print_otag(h, TAG_SPAN, 1, &tag); |
|
|
|
print_text(h, "\\-"); |
print_text(h, "\\-"); |
|
|
/* A blank `Fl' should incur a subsequent space. */ |
/* A blank `Fl' should incur a subsequent space. */ |
Line 766 mdoc_xr_pre(MDOC_ARGS) |
|
Line 756 mdoc_xr_pre(MDOC_ARGS) |
|
struct htmlpair tag[2]; |
struct htmlpair tag[2]; |
const struct mdoc_node *nn; |
const struct mdoc_node *nn; |
|
|
|
if (NULL == n->child) |
|
return(0); |
|
|
PAIR_CLASS_INIT(&tag[0], "link-man"); |
PAIR_CLASS_INIT(&tag[0], "link-man"); |
|
|
if (h->base_man) { |
if (h->base_man) { |
Line 1593 mdoc_vt_pre(MDOC_ARGS) |
|
Line 1586 mdoc_vt_pre(MDOC_ARGS) |
|
struct htmlpair tag; |
struct htmlpair tag; |
struct roffsu su; |
struct roffsu su; |
|
|
if (SEC_SYNOPSIS == n->sec) { |
if (MDOC_BLOCK == n->type) { |
if (n->prev && MDOC_Vt != n->prev->tok) { |
if (n->prev && MDOC_Vt != n->prev->tok) { |
SCALE_VS_INIT(&su, 1); |
SCALE_VS_INIT(&su, 1); |
bufcat_su(h, "margin-top", &su); |
bufcat_su(h, "margin-top", &su); |
Line 1601 mdoc_vt_pre(MDOC_ARGS) |
|
Line 1594 mdoc_vt_pre(MDOC_ARGS) |
|
print_otag(h, TAG_DIV, 1, &tag); |
print_otag(h, TAG_DIV, 1, &tag); |
} else |
} else |
print_otag(h, TAG_DIV, 0, NULL); |
print_otag(h, TAG_DIV, 0, NULL); |
} |
|
|
return(1); |
|
} else if (MDOC_HEAD == n->type) |
|
return(0); |
|
|
PAIR_CLASS_INIT(&tag, "type"); |
PAIR_CLASS_INIT(&tag, "type"); |
print_otag(h, TAG_SPAN, 1, &tag); |
print_otag(h, TAG_SPAN, 1, &tag); |