Merge for mdocml-1.10.9
This commit is contained in:
parent
c0d9444af1
commit
f494eb95a3
281
external/bsd/mdocml/dist/man_action.c
vendored
281
external/bsd/mdocml/dist/man_action.c
vendored
@ -1,281 +0,0 @@
|
||||
/* $Vendor-Id: man_action.c,v 1.40 2010/07/22 23:03:15 kristaps Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "mandoc.h"
|
||||
#include "libman.h"
|
||||
#include "libmandoc.h"
|
||||
|
||||
struct actions {
|
||||
int (*post)(struct man *);
|
||||
};
|
||||
|
||||
static int post_TH(struct man *);
|
||||
static int post_fi(struct man *);
|
||||
static int post_nf(struct man *);
|
||||
static int post_AT(struct man *);
|
||||
static int post_UC(struct man *);
|
||||
|
||||
const struct actions man_actions[MAN_MAX] = {
|
||||
{ NULL }, /* br */
|
||||
{ post_TH }, /* TH */
|
||||
{ NULL }, /* SH */
|
||||
{ NULL }, /* SS */
|
||||
{ NULL }, /* TP */
|
||||
{ NULL }, /* LP */
|
||||
{ NULL }, /* PP */
|
||||
{ NULL }, /* P */
|
||||
{ NULL }, /* IP */
|
||||
{ NULL }, /* HP */
|
||||
{ NULL }, /* SM */
|
||||
{ NULL }, /* SB */
|
||||
{ NULL }, /* BI */
|
||||
{ NULL }, /* IB */
|
||||
{ NULL }, /* BR */
|
||||
{ NULL }, /* RB */
|
||||
{ NULL }, /* R */
|
||||
{ NULL }, /* B */
|
||||
{ NULL }, /* I */
|
||||
{ NULL }, /* IR */
|
||||
{ NULL }, /* RI */
|
||||
{ NULL }, /* na */
|
||||
{ NULL }, /* i */
|
||||
{ NULL }, /* sp */
|
||||
{ post_nf }, /* nf */
|
||||
{ post_fi }, /* fi */
|
||||
{ NULL }, /* r */
|
||||
{ NULL }, /* RE */
|
||||
{ NULL }, /* RS */
|
||||
{ NULL }, /* DT */
|
||||
{ post_UC }, /* UC */
|
||||
{ NULL }, /* PD */
|
||||
{ NULL }, /* Sp */
|
||||
{ post_nf }, /* Vb */
|
||||
{ post_fi }, /* Ve */
|
||||
{ post_AT }, /* AT */
|
||||
{ NULL }, /* in */
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
man_action_post(struct man *m)
|
||||
{
|
||||
|
||||
if (MAN_ACTED & m->last->flags)
|
||||
return(1);
|
||||
m->last->flags |= MAN_ACTED;
|
||||
|
||||
switch (m->last->type) {
|
||||
case (MAN_TEXT):
|
||||
/* FALLTHROUGH */
|
||||
case (MAN_ROOT):
|
||||
return(1);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (NULL == man_actions[m->last->tok].post)
|
||||
return(1);
|
||||
return((*man_actions[m->last->tok].post)(m));
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
post_fi(struct man *m)
|
||||
{
|
||||
|
||||
if ( ! (MAN_LITERAL & m->flags))
|
||||
if ( ! man_nmsg(m, m->last, MANDOCERR_NOSCOPE))
|
||||
return(0);
|
||||
m->flags &= ~MAN_LITERAL;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
post_nf(struct man *m)
|
||||
{
|
||||
|
||||
if (MAN_LITERAL & m->flags)
|
||||
if ( ! man_nmsg(m, m->last, MANDOCERR_SCOPEREP))
|
||||
return(0);
|
||||
m->flags |= MAN_LITERAL;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
post_TH(struct man *m)
|
||||
{
|
||||
struct man_node *n;
|
||||
|
||||
if (m->meta.title)
|
||||
free(m->meta.title);
|
||||
if (m->meta.vol)
|
||||
free(m->meta.vol);
|
||||
if (m->meta.source)
|
||||
free(m->meta.source);
|
||||
if (m->meta.msec)
|
||||
free(m->meta.msec);
|
||||
if (m->meta.rawdate)
|
||||
free(m->meta.rawdate);
|
||||
|
||||
m->meta.title = m->meta.vol = m->meta.rawdate =
|
||||
m->meta.msec = m->meta.source = NULL;
|
||||
m->meta.date = 0;
|
||||
|
||||
/* ->TITLE<- MSEC DATE SOURCE VOL */
|
||||
|
||||
n = m->last->child;
|
||||
assert(n);
|
||||
m->meta.title = mandoc_strdup(n->string);
|
||||
|
||||
/* TITLE ->MSEC<- DATE SOURCE VOL */
|
||||
|
||||
n = n->next;
|
||||
assert(n);
|
||||
m->meta.msec = mandoc_strdup(n->string);
|
||||
|
||||
/* TITLE MSEC ->DATE<- SOURCE VOL */
|
||||
|
||||
/*
|
||||
* Try to parse the date. If this works, stash the epoch (this
|
||||
* is optimal because we can reformat it in the canonical form).
|
||||
* If it doesn't parse, isn't specified at all, or is an empty
|
||||
* string, then use the current date.
|
||||
*/
|
||||
|
||||
n = n->next;
|
||||
if (n && n->string && *n->string) {
|
||||
m->meta.date = mandoc_a2time
|
||||
(MTIME_ISO_8601, n->string);
|
||||
if (0 == m->meta.date) {
|
||||
if ( ! man_nmsg(m, n, MANDOCERR_BADDATE))
|
||||
return(0);
|
||||
m->meta.rawdate = mandoc_strdup(n->string);
|
||||
}
|
||||
} else
|
||||
m->meta.date = time(NULL);
|
||||
|
||||
/* TITLE MSEC DATE ->SOURCE<- VOL */
|
||||
|
||||
if (n && (n = n->next))
|
||||
m->meta.source = mandoc_strdup(n->string);
|
||||
|
||||
/* TITLE MSEC DATE SOURCE ->VOL<- */
|
||||
|
||||
if (n && (n = n->next))
|
||||
m->meta.vol = mandoc_strdup(n->string);
|
||||
|
||||
/*
|
||||
* Remove the `TH' node after we've processed it for our
|
||||
* meta-data.
|
||||
*/
|
||||
man_node_delete(m, m->last);
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
post_AT(struct man *m)
|
||||
{
|
||||
static const char * const unix_versions[] = {
|
||||
"7th Edition",
|
||||
"System III",
|
||||
"System V",
|
||||
"System V Release 2",
|
||||
};
|
||||
|
||||
const char *p, *s;
|
||||
struct man_node *n, *nn;
|
||||
|
||||
n = m->last->child;
|
||||
|
||||
if (NULL == n || MAN_TEXT != n->type)
|
||||
p = unix_versions[0];
|
||||
else {
|
||||
s = n->string;
|
||||
if (0 == strcmp(s, "3"))
|
||||
p = unix_versions[0];
|
||||
else if (0 == strcmp(s, "4"))
|
||||
p = unix_versions[1];
|
||||
else if (0 == strcmp(s, "5")) {
|
||||
nn = n->next;
|
||||
if (nn && MAN_TEXT == nn->type && nn->string[0])
|
||||
p = unix_versions[3];
|
||||
else
|
||||
p = unix_versions[2];
|
||||
} else
|
||||
p = unix_versions[0];
|
||||
}
|
||||
|
||||
if (m->meta.source)
|
||||
free(m->meta.source);
|
||||
|
||||
m->meta.source = mandoc_strdup(p);
|
||||
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
post_UC(struct man *m)
|
||||
{
|
||||
static const char * const bsd_versions[] = {
|
||||
"3rd Berkeley Distribution",
|
||||
"4th Berkeley Distribution",
|
||||
"4.2 Berkeley Distribution",
|
||||
"4.3 Berkeley Distribution",
|
||||
"4.4 Berkeley Distribution",
|
||||
};
|
||||
|
||||
const char *p, *s;
|
||||
struct man_node *n;
|
||||
|
||||
n = m->last->child;
|
||||
|
||||
if (NULL == n || MAN_TEXT != n->type)
|
||||
p = bsd_versions[0];
|
||||
else {
|
||||
s = n->string;
|
||||
if (0 == strcmp(s, "3"))
|
||||
p = bsd_versions[0];
|
||||
else if (0 == strcmp(s, "4"))
|
||||
p = bsd_versions[1];
|
||||
else if (0 == strcmp(s, "5"))
|
||||
p = bsd_versions[2];
|
||||
else if (0 == strcmp(s, "6"))
|
||||
p = bsd_versions[3];
|
||||
else if (0 == strcmp(s, "7"))
|
||||
p = bsd_versions[4];
|
||||
else
|
||||
p = bsd_versions[0];
|
||||
}
|
||||
|
||||
if (m->meta.source)
|
||||
free(m->meta.source);
|
||||
|
||||
m->meta.source = mandoc_strdup(p);
|
||||
|
||||
return(1);
|
||||
}
|
242
external/bsd/mdocml/dist/man_term.c
vendored
242
external/bsd/mdocml/dist/man_term.c
vendored
@ -1,6 +1,7 @@
|
||||
/* $Vendor-Id: man_term.c,v 1.84 2010/07/23 13:22:35 kristaps Exp $ */
|
||||
/* $Vendor-Id: man_term.c,v 1.94 2011/01/04 01:23:18 schwarze Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
|
||||
* Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
@ -80,14 +81,12 @@ static void print_man_foot(struct termp *, const void *);
|
||||
static void print_bvspace(struct termp *,
|
||||
const struct man_node *);
|
||||
|
||||
static int pre_alternate(DECL_ARGS);
|
||||
static int pre_B(DECL_ARGS);
|
||||
static int pre_BI(DECL_ARGS);
|
||||
static int pre_HP(DECL_ARGS);
|
||||
static int pre_I(DECL_ARGS);
|
||||
static int pre_IP(DECL_ARGS);
|
||||
static int pre_PP(DECL_ARGS);
|
||||
static int pre_RB(DECL_ARGS);
|
||||
static int pre_RI(DECL_ARGS);
|
||||
static int pre_RS(DECL_ARGS);
|
||||
static int pre_SH(DECL_ARGS);
|
||||
static int pre_SS(DECL_ARGS);
|
||||
@ -96,6 +95,7 @@ static int pre_ign(DECL_ARGS);
|
||||
static int pre_in(DECL_ARGS);
|
||||
static int pre_literal(DECL_ARGS);
|
||||
static int pre_sp(DECL_ARGS);
|
||||
static int pre_ft(DECL_ARGS);
|
||||
|
||||
static void post_IP(DECL_ARGS);
|
||||
static void post_HP(DECL_ARGS);
|
||||
@ -117,31 +117,27 @@ static const struct termact termacts[MAN_MAX] = {
|
||||
{ pre_HP, post_HP, 0 }, /* HP */
|
||||
{ NULL, NULL, 0 }, /* SM */
|
||||
{ pre_B, NULL, 0 }, /* SB */
|
||||
{ pre_BI, NULL, 0 }, /* BI */
|
||||
{ pre_BI, NULL, 0 }, /* IB */
|
||||
{ pre_RB, NULL, 0 }, /* BR */
|
||||
{ pre_RB, NULL, 0 }, /* RB */
|
||||
{ pre_alternate, NULL, 0 }, /* BI */
|
||||
{ pre_alternate, NULL, 0 }, /* IB */
|
||||
{ pre_alternate, NULL, 0 }, /* BR */
|
||||
{ pre_alternate, NULL, 0 }, /* RB */
|
||||
{ NULL, NULL, 0 }, /* R */
|
||||
{ pre_B, NULL, 0 }, /* B */
|
||||
{ pre_I, NULL, 0 }, /* I */
|
||||
{ pre_RI, NULL, 0 }, /* IR */
|
||||
{ pre_RI, NULL, 0 }, /* RI */
|
||||
{ pre_alternate, NULL, 0 }, /* IR */
|
||||
{ pre_alternate, NULL, 0 }, /* RI */
|
||||
{ NULL, NULL, MAN_NOTEXT }, /* na */
|
||||
{ pre_I, NULL, 0 }, /* i */
|
||||
{ pre_sp, NULL, MAN_NOTEXT }, /* sp */
|
||||
{ pre_literal, NULL, 0 }, /* nf */
|
||||
{ pre_literal, NULL, 0 }, /* fi */
|
||||
{ NULL, NULL, 0 }, /* r */
|
||||
{ NULL, NULL, 0 }, /* RE */
|
||||
{ pre_RS, post_RS, 0 }, /* RS */
|
||||
{ pre_ign, NULL, 0 }, /* DT */
|
||||
{ pre_ign, NULL, 0 }, /* UC */
|
||||
{ pre_ign, NULL, 0 }, /* PD */
|
||||
{ pre_sp, NULL, MAN_NOTEXT }, /* Sp */
|
||||
{ pre_literal, NULL, 0 }, /* Vb */
|
||||
{ pre_literal, NULL, 0 }, /* Ve */
|
||||
{ pre_ign, NULL, 0 }, /* AT */
|
||||
{ pre_in, NULL, MAN_NOTEXT }, /* in */
|
||||
{ pre_ft, NULL, MAN_NOTEXT }, /* ft */
|
||||
};
|
||||
|
||||
|
||||
@ -253,96 +249,67 @@ pre_literal(DECL_ARGS)
|
||||
{
|
||||
|
||||
term_newln(p);
|
||||
switch (n->tok) {
|
||||
case (MAN_Vb):
|
||||
/* FALLTHROUGH */
|
||||
case (MAN_nf):
|
||||
|
||||
if (MAN_nf == n->tok)
|
||||
mt->fl |= MANT_LITERAL;
|
||||
return(MAN_Vb != n->tok);
|
||||
default:
|
||||
else
|
||||
mt->fl &= ~MANT_LITERAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
pre_RB(DECL_ARGS)
|
||||
{
|
||||
const struct man_node *nn;
|
||||
int i;
|
||||
|
||||
for (i = 0, nn = n->child; nn; nn = nn->next, i++) {
|
||||
if (i % 2 && MAN_RB == n->tok)
|
||||
term_fontrepl(p, TERMFONT_BOLD);
|
||||
else if ( ! (i % 2) && MAN_RB != n->tok)
|
||||
term_fontrepl(p, TERMFONT_BOLD);
|
||||
else
|
||||
term_fontrepl(p, TERMFONT_NONE);
|
||||
|
||||
if (i > 0)
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
|
||||
print_man_node(p, mt, nn, m);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
pre_RI(DECL_ARGS)
|
||||
{
|
||||
const struct man_node *nn;
|
||||
int i;
|
||||
|
||||
for (i = 0, nn = n->child; nn; nn = nn->next, i++) {
|
||||
if (i % 2 && MAN_RI == n->tok)
|
||||
term_fontrepl(p, TERMFONT_UNDER);
|
||||
else if ( ! (i % 2) && MAN_RI != n->tok)
|
||||
term_fontrepl(p, TERMFONT_UNDER);
|
||||
else
|
||||
term_fontrepl(p, TERMFONT_NONE);
|
||||
|
||||
if (i > 0)
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
|
||||
print_man_node(p, mt, nn, m);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
pre_BI(DECL_ARGS)
|
||||
pre_alternate(DECL_ARGS)
|
||||
{
|
||||
enum termfont font[2];
|
||||
const struct man_node *nn;
|
||||
int i;
|
||||
int savelit, i;
|
||||
|
||||
for (i = 0, nn = n->child; nn; nn = nn->next, i++) {
|
||||
if (i % 2 && MAN_BI == n->tok)
|
||||
term_fontrepl(p, TERMFONT_UNDER);
|
||||
else if (i % 2)
|
||||
term_fontrepl(p, TERMFONT_BOLD);
|
||||
else if (MAN_BI == n->tok)
|
||||
term_fontrepl(p, TERMFONT_BOLD);
|
||||
else
|
||||
term_fontrepl(p, TERMFONT_UNDER);
|
||||
|
||||
if (i)
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
|
||||
print_man_node(p, mt, nn, m);
|
||||
switch (n->tok) {
|
||||
case (MAN_RB):
|
||||
font[0] = TERMFONT_NONE;
|
||||
font[1] = TERMFONT_BOLD;
|
||||
break;
|
||||
case (MAN_RI):
|
||||
font[0] = TERMFONT_NONE;
|
||||
font[1] = TERMFONT_UNDER;
|
||||
break;
|
||||
case (MAN_BR):
|
||||
font[0] = TERMFONT_BOLD;
|
||||
font[1] = TERMFONT_NONE;
|
||||
break;
|
||||
case (MAN_BI):
|
||||
font[0] = TERMFONT_BOLD;
|
||||
font[1] = TERMFONT_UNDER;
|
||||
break;
|
||||
case (MAN_IR):
|
||||
font[0] = TERMFONT_UNDER;
|
||||
font[1] = TERMFONT_NONE;
|
||||
break;
|
||||
case (MAN_IB):
|
||||
font[0] = TERMFONT_UNDER;
|
||||
font[1] = TERMFONT_BOLD;
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
|
||||
savelit = MANT_LITERAL & mt->fl;
|
||||
mt->fl &= ~MANT_LITERAL;
|
||||
|
||||
for (i = 0, nn = n->child; nn; nn = nn->next, i = 1 - i) {
|
||||
term_fontrepl(p, font[i]);
|
||||
if (savelit && NULL == nn->next)
|
||||
mt->fl |= MANT_LITERAL;
|
||||
print_man_node(p, mt, nn, m);
|
||||
if (nn->next)
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
pre_B(DECL_ARGS)
|
||||
@ -352,6 +319,46 @@ pre_B(DECL_ARGS)
|
||||
return(1);
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
pre_ft(DECL_ARGS)
|
||||
{
|
||||
const char *cp;
|
||||
|
||||
if (NULL == n->child) {
|
||||
term_fontlast(p);
|
||||
return(0);
|
||||
}
|
||||
|
||||
cp = n->child->string;
|
||||
switch (*cp) {
|
||||
case ('4'):
|
||||
/* FALLTHROUGH */
|
||||
case ('3'):
|
||||
/* FALLTHROUGH */
|
||||
case ('B'):
|
||||
term_fontrepl(p, TERMFONT_BOLD);
|
||||
break;
|
||||
case ('2'):
|
||||
/* FALLTHROUGH */
|
||||
case ('I'):
|
||||
term_fontrepl(p, TERMFONT_UNDER);
|
||||
break;
|
||||
case ('P'):
|
||||
term_fontlast(p);
|
||||
break;
|
||||
case ('1'):
|
||||
/* FALLTHROUGH */
|
||||
case ('C'):
|
||||
/* FALLTHROUGH */
|
||||
case ('R'):
|
||||
term_fontrepl(p, TERMFONT_NONE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
@ -497,7 +504,7 @@ pre_PP(DECL_ARGS)
|
||||
break;
|
||||
}
|
||||
|
||||
return(1);
|
||||
return(MAN_HEAD != n->type);
|
||||
}
|
||||
|
||||
|
||||
@ -507,7 +514,7 @@ pre_IP(DECL_ARGS)
|
||||
{
|
||||
const struct man_node *nn;
|
||||
size_t len;
|
||||
int ival;
|
||||
int savelit, ival;
|
||||
|
||||
switch (n->type) {
|
||||
case (MAN_BODY):
|
||||
@ -527,15 +534,11 @@ pre_IP(DECL_ARGS)
|
||||
len = mt->lmargin;
|
||||
ival = -1;
|
||||
|
||||
/* Calculate offset. */
|
||||
|
||||
/* Calculate the offset from the optional second argument. */
|
||||
if (NULL != (nn = n->parent->head->child))
|
||||
if (NULL != (nn = nn->next)) {
|
||||
for ( ; nn->next; nn = nn->next)
|
||||
/* Do nothing. */ ;
|
||||
if (NULL != (nn = nn->next))
|
||||
if ((ival = a2width(p, nn->string)) >= 0)
|
||||
len = (size_t)ival;
|
||||
}
|
||||
|
||||
switch (n->type) {
|
||||
case (MAN_HEAD):
|
||||
@ -551,9 +554,15 @@ pre_IP(DECL_ARGS)
|
||||
/* Set the saved left-margin. */
|
||||
mt->lmargin = (size_t)ival;
|
||||
|
||||
/* Don't print the length value. */
|
||||
for (nn = n->child; nn->next; nn = nn->next)
|
||||
print_man_node(p, mt, nn, m);
|
||||
savelit = MANT_LITERAL & mt->fl;
|
||||
mt->fl &= ~MANT_LITERAL;
|
||||
|
||||
if (n->child)
|
||||
print_man_node(p, mt, n->child, m);
|
||||
|
||||
if (savelit)
|
||||
mt->fl |= MANT_LITERAL;
|
||||
|
||||
return(0);
|
||||
case (MAN_BODY):
|
||||
p->offset = mt->offset + len;
|
||||
@ -579,7 +588,7 @@ post_IP(DECL_ARGS)
|
||||
p->rmargin = p->maxrmargin;
|
||||
break;
|
||||
case (MAN_BODY):
|
||||
term_flushln(p);
|
||||
term_newln(p);
|
||||
p->flags &= ~TERMP_NOLPAD;
|
||||
break;
|
||||
default:
|
||||
@ -594,12 +603,11 @@ pre_TP(DECL_ARGS)
|
||||
{
|
||||
const struct man_node *nn;
|
||||
size_t len;
|
||||
int ival;
|
||||
int savelit, ival;
|
||||
|
||||
switch (n->type) {
|
||||
case (MAN_HEAD):
|
||||
p->flags |= TERMP_NOBREAK;
|
||||
p->flags |= TERMP_TWOSPACE;
|
||||
break;
|
||||
case (MAN_BODY):
|
||||
p->flags |= TERMP_NOLPAD;
|
||||
@ -634,11 +642,17 @@ pre_TP(DECL_ARGS)
|
||||
p->offset = mt->offset;
|
||||
p->rmargin = mt->offset + len;
|
||||
|
||||
savelit = MANT_LITERAL & mt->fl;
|
||||
mt->fl &= ~MANT_LITERAL;
|
||||
|
||||
/* Don't print same-line elements. */
|
||||
for (nn = n->child; nn; nn = nn->next)
|
||||
if (nn->line > n->line)
|
||||
print_man_node(p, mt, nn, m);
|
||||
|
||||
if (savelit)
|
||||
mt->fl |= MANT_LITERAL;
|
||||
|
||||
if (ival >= 0)
|
||||
mt->lmargin = (size_t)ival;
|
||||
|
||||
@ -668,7 +682,7 @@ post_TP(DECL_ARGS)
|
||||
p->rmargin = p->maxrmargin;
|
||||
break;
|
||||
case (MAN_BODY):
|
||||
term_flushln(p);
|
||||
term_newln(p);
|
||||
p->flags &= ~TERMP_NOLPAD;
|
||||
break;
|
||||
default:
|
||||
@ -855,10 +869,16 @@ print_man_node(DECL_ARGS)
|
||||
p->rmargin = p->maxrmargin = TERM_MAXMARGIN;
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_flushln(p);
|
||||
p->flags &= ~TERMP_NOLPAD;
|
||||
p->rmargin = rm;
|
||||
p->maxrmargin = rmax;
|
||||
}
|
||||
break;
|
||||
case (MAN_TBL):
|
||||
if (TBL_SPAN_FIRST & n->span->flags)
|
||||
term_newln(p);
|
||||
term_tbl(p, n->span);
|
||||
break;
|
||||
default:
|
||||
if ( ! (MAN_NOTEXT & termacts[n->tok].flags))
|
||||
term_fontrepl(p, TERMFONT_NONE);
|
||||
@ -870,11 +890,17 @@ print_man_node(DECL_ARGS)
|
||||
if (c && n->child)
|
||||
print_man_nodelist(p, mt, n->child, m);
|
||||
|
||||
if (MAN_TEXT != n->type) {
|
||||
switch (n->type) {
|
||||
case (MAN_TEXT):
|
||||
/* FALLTHROUGH */
|
||||
case (MAN_TBL):
|
||||
break;
|
||||
default:
|
||||
if (termacts[n->tok].post)
|
||||
(*termacts[n->tok].post)(p, mt, n, m);
|
||||
if ( ! (MAN_NOTEXT & termacts[n->tok].flags))
|
||||
term_fontrepl(p, TERMFONT_NONE);
|
||||
break;
|
||||
}
|
||||
|
||||
if (MAN_EOS & n->flags)
|
||||
@ -916,6 +942,10 @@ print_man_foot(struct termp *p, const void *arg)
|
||||
p->rmargin = p->maxrmargin - term_strlen(p, buf);
|
||||
p->offset = 0;
|
||||
|
||||
/* term_strlen() can return zero. */
|
||||
if (p->rmargin == p->maxrmargin)
|
||||
p->rmargin--;
|
||||
|
||||
if (meta->source)
|
||||
term_word(p, meta->source);
|
||||
if (meta->source)
|
||||
|
1045
external/bsd/mdocml/dist/mdoc_action.c
vendored
1045
external/bsd/mdocml/dist/mdoc_action.c
vendored
File diff suppressed because it is too large
Load Diff
609
external/bsd/mdocml/dist/mdoc_term.c
vendored
609
external/bsd/mdocml/dist/mdoc_term.c
vendored
@ -1,4 +1,4 @@
|
||||
/* $Vendor-Id: mdoc_term.c,v 1.179 2010/07/27 08:38:04 kristaps Exp $ */
|
||||
/* $Vendor-Id: mdoc_term.c,v 1.208 2011/01/06 14:05:12 kristaps Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
|
||||
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
|
||||
@ -68,50 +68,43 @@ static void synopsis_pre(struct termp *,
|
||||
const struct mdoc_node *);
|
||||
|
||||
static void termp____post(DECL_ARGS);
|
||||
static void termp__t_post(DECL_ARGS);
|
||||
static void termp_an_post(DECL_ARGS);
|
||||
static void termp_aq_post(DECL_ARGS);
|
||||
static void termp_bd_post(DECL_ARGS);
|
||||
static void termp_bk_post(DECL_ARGS);
|
||||
static void termp_bl_post(DECL_ARGS);
|
||||
static void termp_bq_post(DECL_ARGS);
|
||||
static void termp_brq_post(DECL_ARGS);
|
||||
static void termp_bx_post(DECL_ARGS);
|
||||
static void termp_d1_post(DECL_ARGS);
|
||||
static void termp_dq_post(DECL_ARGS);
|
||||
static int termp_fd_pre(DECL_ARGS);
|
||||
static void termp_fo_post(DECL_ARGS);
|
||||
static void termp_in_post(DECL_ARGS);
|
||||
static void termp_it_post(DECL_ARGS);
|
||||
static void termp_lb_post(DECL_ARGS);
|
||||
static void termp_nm_post(DECL_ARGS);
|
||||
static void termp_op_post(DECL_ARGS);
|
||||
static void termp_pf_post(DECL_ARGS);
|
||||
static void termp_pq_post(DECL_ARGS);
|
||||
static void termp_qq_post(DECL_ARGS);
|
||||
static void termp_quote_post(DECL_ARGS);
|
||||
static void termp_sh_post(DECL_ARGS);
|
||||
static void termp_sq_post(DECL_ARGS);
|
||||
static void termp_ss_post(DECL_ARGS);
|
||||
|
||||
static int termp__a_pre(DECL_ARGS);
|
||||
static int termp__t_pre(DECL_ARGS);
|
||||
static int termp_an_pre(DECL_ARGS);
|
||||
static int termp_ap_pre(DECL_ARGS);
|
||||
static int termp_aq_pre(DECL_ARGS);
|
||||
static int termp_bd_pre(DECL_ARGS);
|
||||
static int termp_bf_pre(DECL_ARGS);
|
||||
static int termp_bk_pre(DECL_ARGS);
|
||||
static int termp_bl_pre(DECL_ARGS);
|
||||
static int termp_bold_pre(DECL_ARGS);
|
||||
static int termp_bq_pre(DECL_ARGS);
|
||||
static int termp_brq_pre(DECL_ARGS);
|
||||
static int termp_bt_pre(DECL_ARGS);
|
||||
static int termp_cd_pre(DECL_ARGS);
|
||||
static int termp_d1_pre(DECL_ARGS);
|
||||
static int termp_dq_pre(DECL_ARGS);
|
||||
static int termp_ex_pre(DECL_ARGS);
|
||||
static int termp_fa_pre(DECL_ARGS);
|
||||
static int termp_fd_pre(DECL_ARGS);
|
||||
static int termp_fl_pre(DECL_ARGS);
|
||||
static int termp_fn_pre(DECL_ARGS);
|
||||
static int termp_fo_pre(DECL_ARGS);
|
||||
static int termp_ft_pre(DECL_ARGS);
|
||||
static int termp_igndelim_pre(DECL_ARGS);
|
||||
static int termp_in_pre(DECL_ARGS);
|
||||
static int termp_it_pre(DECL_ARGS);
|
||||
static int termp_li_pre(DECL_ARGS);
|
||||
@ -119,16 +112,12 @@ static int termp_lk_pre(DECL_ARGS);
|
||||
static int termp_nd_pre(DECL_ARGS);
|
||||
static int termp_nm_pre(DECL_ARGS);
|
||||
static int termp_ns_pre(DECL_ARGS);
|
||||
static int termp_op_pre(DECL_ARGS);
|
||||
static int termp_pf_pre(DECL_ARGS);
|
||||
static int termp_pq_pre(DECL_ARGS);
|
||||
static int termp_qq_pre(DECL_ARGS);
|
||||
static int termp_quote_pre(DECL_ARGS);
|
||||
static int termp_rs_pre(DECL_ARGS);
|
||||
static int termp_rv_pre(DECL_ARGS);
|
||||
static int termp_sh_pre(DECL_ARGS);
|
||||
static int termp_sm_pre(DECL_ARGS);
|
||||
static int termp_sp_pre(DECL_ARGS);
|
||||
static int termp_sq_pre(DECL_ARGS);
|
||||
static int termp_ss_pre(DECL_ARGS);
|
||||
static int termp_under_pre(DECL_ARGS);
|
||||
static int termp_ud_pre(DECL_ARGS);
|
||||
@ -170,7 +159,7 @@ static const struct termact termacts[MDOC_MAX] = {
|
||||
{ termp_li_pre, NULL }, /* Li */
|
||||
{ termp_nd_pre, NULL }, /* Nd */
|
||||
{ termp_nm_pre, termp_nm_post }, /* Nm */
|
||||
{ termp_op_pre, termp_op_post }, /* Op */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Op */
|
||||
{ NULL, NULL }, /* Ot */
|
||||
{ termp_under_pre, NULL }, /* Pa */
|
||||
{ termp_rv_pre, NULL }, /* Rv */
|
||||
@ -178,7 +167,7 @@ static const struct termact termacts[MDOC_MAX] = {
|
||||
{ termp_under_pre, NULL }, /* Va */
|
||||
{ termp_vt_pre, NULL }, /* Vt */
|
||||
{ termp_xr_pre, NULL }, /* Xr */
|
||||
{ NULL, termp____post }, /* %A */
|
||||
{ termp__a_pre, termp____post }, /* %A */
|
||||
{ termp_under_pre, termp____post }, /* %B */
|
||||
{ NULL, termp____post }, /* %D */
|
||||
{ termp_under_pre, termp____post }, /* %I */
|
||||
@ -187,45 +176,45 @@ static const struct termact termacts[MDOC_MAX] = {
|
||||
{ NULL, termp____post }, /* %O */
|
||||
{ NULL, termp____post }, /* %P */
|
||||
{ NULL, termp____post }, /* %R */
|
||||
{ termp_under_pre, termp____post }, /* %T */
|
||||
{ termp__t_pre, termp__t_post }, /* %T */
|
||||
{ NULL, termp____post }, /* %V */
|
||||
{ NULL, NULL }, /* Ac */
|
||||
{ termp_aq_pre, termp_aq_post }, /* Ao */
|
||||
{ termp_aq_pre, termp_aq_post }, /* Aq */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Ao */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Aq */
|
||||
{ NULL, NULL }, /* At */
|
||||
{ NULL, NULL }, /* Bc */
|
||||
{ termp_bf_pre, NULL }, /* Bf */
|
||||
{ termp_bq_pre, termp_bq_post }, /* Bo */
|
||||
{ termp_bq_pre, termp_bq_post }, /* Bq */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Bo */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Bq */
|
||||
{ termp_xx_pre, NULL }, /* Bsx */
|
||||
{ NULL, termp_bx_post }, /* Bx */
|
||||
{ NULL, NULL }, /* Db */
|
||||
{ NULL, NULL }, /* Dc */
|
||||
{ termp_dq_pre, termp_dq_post }, /* Do */
|
||||
{ termp_dq_pre, termp_dq_post }, /* Dq */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Do */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Dq */
|
||||
{ NULL, NULL }, /* Ec */ /* FIXME: no space */
|
||||
{ NULL, NULL }, /* Ef */
|
||||
{ termp_under_pre, NULL }, /* Em */
|
||||
{ NULL, NULL }, /* Eo */
|
||||
{ termp_xx_pre, NULL }, /* Fx */
|
||||
{ termp_bold_pre, NULL }, /* Ms */
|
||||
{ NULL, NULL }, /* No */
|
||||
{ termp_igndelim_pre, NULL }, /* No */
|
||||
{ termp_ns_pre, NULL }, /* Ns */
|
||||
{ termp_xx_pre, NULL }, /* Nx */
|
||||
{ termp_xx_pre, NULL }, /* Ox */
|
||||
{ NULL, NULL }, /* Pc */
|
||||
{ termp_pf_pre, termp_pf_post }, /* Pf */
|
||||
{ termp_pq_pre, termp_pq_post }, /* Po */
|
||||
{ termp_pq_pre, termp_pq_post }, /* Pq */
|
||||
{ termp_igndelim_pre, termp_pf_post }, /* Pf */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Po */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Pq */
|
||||
{ NULL, NULL }, /* Qc */
|
||||
{ termp_sq_pre, termp_sq_post }, /* Ql */
|
||||
{ termp_qq_pre, termp_qq_post }, /* Qo */
|
||||
{ termp_qq_pre, termp_qq_post }, /* Qq */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Ql */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Qo */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Qq */
|
||||
{ NULL, NULL }, /* Re */
|
||||
{ termp_rs_pre, NULL }, /* Rs */
|
||||
{ NULL, NULL }, /* Sc */
|
||||
{ termp_sq_pre, termp_sq_post }, /* So */
|
||||
{ termp_sq_pre, termp_sq_post }, /* Sq */
|
||||
{ termp_quote_pre, termp_quote_post }, /* So */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Sq */
|
||||
{ termp_sm_pre, NULL }, /* Sm */
|
||||
{ termp_under_pre, NULL }, /* Sx */
|
||||
{ termp_bold_pre, NULL }, /* Sy */
|
||||
@ -235,7 +224,7 @@ static const struct termact termacts[MDOC_MAX] = {
|
||||
{ NULL, NULL }, /* Xo */
|
||||
{ termp_fo_pre, termp_fo_post }, /* Fo */
|
||||
{ NULL, NULL }, /* Fc */
|
||||
{ termp_op_pre, termp_op_post }, /* Oo */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Oo */
|
||||
{ NULL, NULL }, /* Oc */
|
||||
{ termp_bk_pre, termp_bk_post }, /* Bk */
|
||||
{ NULL, NULL }, /* Ek */
|
||||
@ -247,8 +236,8 @@ static const struct termact termacts[MDOC_MAX] = {
|
||||
{ termp_sp_pre, NULL }, /* Lp */
|
||||
{ termp_lk_pre, NULL }, /* Lk */
|
||||
{ termp_under_pre, NULL }, /* Mt */
|
||||
{ termp_brq_pre, termp_brq_post }, /* Brq */
|
||||
{ termp_brq_pre, termp_brq_post }, /* Bro */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Brq */
|
||||
{ termp_quote_pre, termp_quote_post }, /* Bro */
|
||||
{ NULL, NULL }, /* Brc */
|
||||
{ NULL, termp____post }, /* %C */
|
||||
{ NULL, NULL }, /* Es */ /* TODO */
|
||||
@ -324,17 +313,29 @@ print_mdoc_node(DECL_ARGS)
|
||||
memset(&npair, 0, sizeof(struct termpair));
|
||||
npair.ppair = pair;
|
||||
|
||||
if (MDOC_TEXT == n->type)
|
||||
switch (n->type) {
|
||||
case (MDOC_TEXT):
|
||||
term_word(p, n->string);
|
||||
else if (termacts[n->tok].pre && ENDBODY_NOT == n->end)
|
||||
chld = (*termacts[n->tok].pre)(p, &npair, m, n);
|
||||
break;
|
||||
case (MDOC_TBL):
|
||||
term_tbl(p, n->span);
|
||||
break;
|
||||
default:
|
||||
if (termacts[n->tok].pre && ENDBODY_NOT == n->end)
|
||||
chld = (*termacts[n->tok].pre)
|
||||
(p, &npair, m, n);
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* Keeps only work until the end of a line. If a keep was
|
||||
* invoked in a prior line, revert it to PREKEEP.
|
||||
*
|
||||
* Also let SYNPRETTY sections behave as if they were wrapped
|
||||
* in a `Bk' block.
|
||||
*/
|
||||
|
||||
if (TERMP_KEEP & p->flags) {
|
||||
if (TERMP_KEEP & p->flags || MDOC_SYNPRETTY & n->flags) {
|
||||
if (n->prev && n->prev->line != n->line) {
|
||||
p->flags &= ~TERMP_KEEP;
|
||||
p->flags |= TERMP_PREKEEP;
|
||||
@ -346,13 +347,29 @@ print_mdoc_node(DECL_ARGS)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Since SYNPRETTY sections aren't "turned off" with `Ek',
|
||||
* we have to intuit whether we should disable formatting.
|
||||
*/
|
||||
|
||||
if ( ! (MDOC_SYNPRETTY & n->flags) &&
|
||||
((n->prev && MDOC_SYNPRETTY & n->prev->flags) ||
|
||||
(n->parent && MDOC_SYNPRETTY & n->parent->flags)))
|
||||
p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP);
|
||||
|
||||
if (chld && n->child)
|
||||
print_mdoc_nodelist(p, &npair, m, n->child);
|
||||
|
||||
term_fontpopq(p, font);
|
||||
|
||||
if (MDOC_TEXT != n->type && termacts[n->tok].post &&
|
||||
! (MDOC_ENDED & n->flags)) {
|
||||
switch (n->type) {
|
||||
case (MDOC_TEXT):
|
||||
break;
|
||||
case (MDOC_TBL):
|
||||
break;
|
||||
default:
|
||||
if ( ! termacts[n->tok].post || MDOC_ENDED & n->flags)
|
||||
break;
|
||||
(void)(*termacts[n->tok].post)(p, &npair, m, n);
|
||||
|
||||
/*
|
||||
@ -370,6 +387,7 @@ print_mdoc_node(DECL_ARGS)
|
||||
*/
|
||||
if (ENDBODY_NOSPACE == n->end)
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (MDOC_EOS & n->flags)
|
||||
@ -556,9 +574,9 @@ print_bvspace(struct termp *p,
|
||||
|
||||
term_newln(p);
|
||||
|
||||
if (MDOC_Bd == bl->tok && bl->data.Bd->comp)
|
||||
if (MDOC_Bd == bl->tok && bl->norm->Bd.comp)
|
||||
return;
|
||||
if (MDOC_Bl == bl->tok && bl->data.Bl->comp)
|
||||
if (MDOC_Bl == bl->tok && bl->norm->Bl.comp)
|
||||
return;
|
||||
|
||||
/* Do not vspace directly after Ss/Sh. */
|
||||
@ -577,13 +595,13 @@ print_bvspace(struct termp *p,
|
||||
|
||||
/* A `-column' does not assert vspace within the list. */
|
||||
|
||||
if (MDOC_Bl == bl->tok && LIST_column == bl->data.Bl->type)
|
||||
if (MDOC_Bl == bl->tok && LIST_column == bl->norm->Bl.type)
|
||||
if (n->prev && MDOC_It == n->prev->tok)
|
||||
return;
|
||||
|
||||
/* A `-diag' without body does not vspace. */
|
||||
|
||||
if (MDOC_Bl == bl->tok && LIST_diag == bl->data.Bl->type)
|
||||
if (MDOC_Bl == bl->tok && LIST_diag == bl->norm->Bl.type)
|
||||
if (n->prev && MDOC_It == n->prev->tok) {
|
||||
assert(n->prev->body);
|
||||
if (NULL == n->prev->body->child)
|
||||
@ -594,33 +612,6 @@ print_bvspace(struct termp *p,
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_dq_pre(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return(1);
|
||||
|
||||
term_word(p, "\\(lq");
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
termp_dq_post(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return;
|
||||
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, "\\(rq");
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_it_pre(DECL_ARGS)
|
||||
@ -637,8 +628,7 @@ termp_it_pre(DECL_ARGS)
|
||||
}
|
||||
|
||||
bl = n->parent->parent->parent;
|
||||
assert(bl->data.Bl);
|
||||
type = bl->data.Bl->type;
|
||||
type = bl->norm->Bl.type;
|
||||
|
||||
/*
|
||||
* First calculate width and offset. This is pretty easy unless
|
||||
@ -648,8 +638,8 @@ termp_it_pre(DECL_ARGS)
|
||||
|
||||
width = offset = 0;
|
||||
|
||||
if (bl->data.Bl->offs)
|
||||
offset = a2offs(p, bl->data.Bl->offs);
|
||||
if (bl->norm->Bl.offs)
|
||||
offset = a2offs(p, bl->norm->Bl.offs);
|
||||
|
||||
switch (type) {
|
||||
case (LIST_column):
|
||||
@ -665,7 +655,7 @@ termp_it_pre(DECL_ARGS)
|
||||
* column.
|
||||
* - For more than 5 columns, add only one column.
|
||||
*/
|
||||
ncols = bl->data.Bl->ncols;
|
||||
ncols = bl->norm->Bl.ncols;
|
||||
|
||||
/* LINTED */
|
||||
dcol = ncols < 5 ? term_len(p, 4) :
|
||||
@ -680,7 +670,7 @@ termp_it_pre(DECL_ARGS)
|
||||
nn->prev && i < (int)ncols;
|
||||
nn = nn->prev, i++)
|
||||
offset += dcol + a2width
|
||||
(p, bl->data.Bl->cols[i]);
|
||||
(p, bl->norm->Bl.cols[i]);
|
||||
|
||||
/*
|
||||
* When exceeding the declared number of columns, leave
|
||||
@ -695,10 +685,10 @@ termp_it_pre(DECL_ARGS)
|
||||
* Use the declared column widths, extended as explained
|
||||
* in the preceding paragraph.
|
||||
*/
|
||||
width = a2width(p, bl->data.Bl->cols[i]) + dcol;
|
||||
width = a2width(p, bl->norm->Bl.cols[i]) + dcol;
|
||||
break;
|
||||
default:
|
||||
if (NULL == bl->data.Bl->width)
|
||||
if (NULL == bl->norm->Bl.width)
|
||||
break;
|
||||
|
||||
/*
|
||||
@ -706,8 +696,8 @@ termp_it_pre(DECL_ARGS)
|
||||
* number for buffering single arguments. See the above
|
||||
* handling for column for how this changes.
|
||||
*/
|
||||
assert(bl->data.Bl->width);
|
||||
width = a2width(p, bl->data.Bl->width) + term_len(p, 2);
|
||||
assert(bl->norm->Bl.width);
|
||||
width = a2width(p, bl->norm->Bl.width) + term_len(p, 2);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -969,7 +959,7 @@ termp_it_post(DECL_ARGS)
|
||||
if (MDOC_BLOCK == n->type)
|
||||
return;
|
||||
|
||||
type = n->parent->parent->parent->data.Bl->type;
|
||||
type = n->parent->parent->parent->norm->Bl.type;
|
||||
|
||||
switch (type) {
|
||||
case (LIST_item):
|
||||
@ -1030,12 +1020,18 @@ termp_nm_pre(DECL_ARGS)
|
||||
synopsis_pre(p, n->parent);
|
||||
|
||||
if (MDOC_HEAD == n->type && n->next->child) {
|
||||
p->flags |= TERMP_NOSPACE | TERMP_NOBREAK | TERMP_HANG;
|
||||
p->rmargin = p->offset + term_len(p, 1) +
|
||||
(NULL == n->child ? term_strlen(p, m->name) :
|
||||
MDOC_TEXT == n->child->type ?
|
||||
term_strlen(p, n->child->string) :
|
||||
term_len(p, 5));
|
||||
p->flags |= TERMP_NOSPACE | TERMP_NOBREAK;
|
||||
p->rmargin = p->offset + term_len(p, 1);
|
||||
if (NULL == n->child) {
|
||||
p->rmargin += term_strlen(p, m->name);
|
||||
} else if (MDOC_TEXT == n->child->type) {
|
||||
p->rmargin += term_strlen(p, n->child->string);
|
||||
if (n->child->next)
|
||||
p->flags |= TERMP_HANG;
|
||||
} else {
|
||||
p->rmargin += term_len(p, 5);
|
||||
p->flags |= TERMP_HANG;
|
||||
}
|
||||
}
|
||||
|
||||
term_fontpush(p, TERMFONT_BOLD);
|
||||
@ -1077,6 +1073,19 @@ termp_fl_pre(DECL_ARGS)
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp__a_pre(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (n->prev && MDOC__A == n->prev->tok)
|
||||
if (NULL == n->next || MDOC__A != n->next->tok)
|
||||
term_word(p, "and");
|
||||
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_an_pre(DECL_ARGS)
|
||||
@ -1124,10 +1133,10 @@ termp_an_post(DECL_ARGS)
|
||||
return;
|
||||
}
|
||||
|
||||
if (AUTH_split == n->data.An.auth) {
|
||||
if (AUTH_split == n->norm->An.auth) {
|
||||
p->flags &= ~TERMP_NOSPLIT;
|
||||
p->flags |= TERMP_SPLIT;
|
||||
} else if (AUTH_nosplit == n->data.An.auth) {
|
||||
} else if (AUTH_nosplit == n->norm->An.auth) {
|
||||
p->flags &= ~TERMP_SPLIT;
|
||||
p->flags |= TERMP_NOSPLIT;
|
||||
}
|
||||
@ -1268,18 +1277,6 @@ termp_bl_post(DECL_ARGS)
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
termp_op_post(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return;
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, "\\(rB");
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_xr_pre(DECL_ARGS)
|
||||
@ -1297,9 +1294,7 @@ termp_xr_pre(DECL_ARGS)
|
||||
return(0);
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, "(");
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, nn->string);
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, ")");
|
||||
|
||||
return(0);
|
||||
@ -1447,23 +1442,6 @@ termp_sh_post(DECL_ARGS)
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_op_pre(DECL_ARGS)
|
||||
{
|
||||
|
||||
switch (n->type) {
|
||||
case (MDOC_BODY):
|
||||
term_word(p, "\\(lB");
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_bt_pre(DECL_ARGS)
|
||||
@ -1520,31 +1498,6 @@ termp_d1_post(DECL_ARGS)
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_aq_pre(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return(1);
|
||||
term_word(p, "\\(la");
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
termp_aq_post(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return;
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, "\\(ra");
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_ft_pre(DECL_ARGS)
|
||||
@ -1630,9 +1583,8 @@ termp_bd_pre(DECL_ARGS)
|
||||
} else if (MDOC_HEAD == n->type)
|
||||
return(0);
|
||||
|
||||
assert(n->data.Bd);
|
||||
if (n->data.Bd->offs)
|
||||
p->offset += a2offs(p, n->data.Bd->offs);
|
||||
if (n->norm->Bd.offs)
|
||||
p->offset += a2offs(p, n->norm->Bd.offs);
|
||||
|
||||
/*
|
||||
* If -ragged or -filled are specified, the block does nothing
|
||||
@ -1642,20 +1594,50 @@ termp_bd_pre(DECL_ARGS)
|
||||
* lines are allowed.
|
||||
*/
|
||||
|
||||
if (DISP_literal != n->data.Bd->type &&
|
||||
DISP_unfilled != n->data.Bd->type)
|
||||
if (DISP_literal != n->norm->Bd.type &&
|
||||
DISP_unfilled != n->norm->Bd.type)
|
||||
return(1);
|
||||
|
||||
tabwidth = p->tabwidth;
|
||||
p->tabwidth = term_len(p, 8);
|
||||
if (DISP_literal == n->norm->Bd.type)
|
||||
p->tabwidth = term_len(p, 8);
|
||||
|
||||
rm = p->rmargin;
|
||||
rmax = p->maxrmargin;
|
||||
p->rmargin = p->maxrmargin = TERM_MAXMARGIN;
|
||||
|
||||
for (nn = n->child; nn; nn = nn->next) {
|
||||
if (nn->prev && nn->prev->line < nn->line)
|
||||
term_newln(p);
|
||||
print_mdoc_node(p, pair, m, nn);
|
||||
/*
|
||||
* If the printed node flushes its own line, then we
|
||||
* needn't do it here as well. This is hacky, but the
|
||||
* notion of selective eoln whitespace is pretty dumb
|
||||
* anyway, so don't sweat it.
|
||||
*/
|
||||
switch (nn->tok) {
|
||||
case (MDOC_Sm):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_br):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_sp):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Bl):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_D1):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Dl):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Lp):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Pp):
|
||||
continue;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (nn->next && nn->next->line == nn->line)
|
||||
continue;
|
||||
term_flushln(p);
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
}
|
||||
|
||||
p->tabwidth = tabwidth;
|
||||
@ -1677,9 +1659,8 @@ termp_bd_post(DECL_ARGS)
|
||||
rm = p->rmargin;
|
||||
rmax = p->maxrmargin;
|
||||
|
||||
assert(n->data.Bd);
|
||||
if (DISP_literal == n->data.Bd->type ||
|
||||
DISP_unfilled == n->data.Bd->type)
|
||||
if (DISP_literal == n->norm->Bd.type ||
|
||||
DISP_unfilled == n->norm->Bd.type)
|
||||
p->rmargin = p->maxrmargin = TERM_MAXMARGIN;
|
||||
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
@ -1690,31 +1671,6 @@ termp_bd_post(DECL_ARGS)
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_qq_pre(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return(1);
|
||||
term_word(p, "\"");
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
termp_qq_post(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return;
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, "\"");
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
termp_bx_post(DECL_ARGS)
|
||||
@ -1735,7 +1691,7 @@ termp_xx_pre(DECL_ARGS)
|
||||
pp = NULL;
|
||||
switch (n->tok) {
|
||||
case (MDOC_Bsx):
|
||||
pp = "BSDI BSD/OS";
|
||||
pp = "BSD/OS";
|
||||
break;
|
||||
case (MDOC_Dx):
|
||||
pp = "DragonFly";
|
||||
@ -1764,32 +1720,7 @@ termp_xx_pre(DECL_ARGS)
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_sq_pre(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return(1);
|
||||
term_word(p, "\\(oq");
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
termp_sq_post(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return;
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, "\\(aq");
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_pf_pre(DECL_ARGS)
|
||||
termp_igndelim_pre(DECL_ARGS)
|
||||
{
|
||||
|
||||
p->flags |= TERMP_IGNDELIM;
|
||||
@ -1802,7 +1733,6 @@ static void
|
||||
termp_pf_post(DECL_ARGS)
|
||||
{
|
||||
|
||||
p->flags &= ~TERMP_IGNDELIM;
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
}
|
||||
|
||||
@ -1902,11 +1832,6 @@ termp_sp_pre(DECL_ARGS)
|
||||
len = 0;
|
||||
break;
|
||||
default:
|
||||
assert(n->parent);
|
||||
if ((NULL == n->next || NULL == n->prev) &&
|
||||
(MDOC_Ss == n->parent->tok ||
|
||||
MDOC_Sh == n->parent->tok))
|
||||
return(0);
|
||||
len = 1;
|
||||
break;
|
||||
}
|
||||
@ -1922,12 +1847,61 @@ termp_sp_pre(DECL_ARGS)
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_brq_pre(DECL_ARGS)
|
||||
termp_quote_pre(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
if (MDOC_BODY != n->type && MDOC_ELEM != n->type)
|
||||
return(1);
|
||||
term_word(p, "\\(lC");
|
||||
|
||||
switch (n->tok) {
|
||||
case (MDOC_Ao):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Aq):
|
||||
term_word(p, "<");
|
||||
break;
|
||||
case (MDOC_Bro):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Brq):
|
||||
term_word(p, "{");
|
||||
break;
|
||||
case (MDOC_Oo):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Op):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Bo):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Bq):
|
||||
term_word(p, "[");
|
||||
break;
|
||||
case (MDOC_Do):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Dq):
|
||||
term_word(p, "``");
|
||||
break;
|
||||
case (MDOC_Po):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Pq):
|
||||
term_word(p, "(");
|
||||
break;
|
||||
case (MDOC__T):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Qo):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Qq):
|
||||
term_word(p, "\"");
|
||||
break;
|
||||
case (MDOC_Ql):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_So):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Sq):
|
||||
term_word(p, "`");
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
return(1);
|
||||
}
|
||||
@ -1935,62 +1909,62 @@ termp_brq_pre(DECL_ARGS)
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
termp_brq_post(DECL_ARGS)
|
||||
termp_quote_post(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
if (MDOC_BODY != n->type && MDOC_ELEM != n->type)
|
||||
return;
|
||||
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, "\\(rC");
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_bq_pre(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return(1);
|
||||
term_word(p, "\\(lB");
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
termp_bq_post(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return;
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, "\\(rB");
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_pq_pre(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return(1);
|
||||
term_word(p, "\\&(");
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
termp_pq_post(DECL_ARGS)
|
||||
{
|
||||
|
||||
if (MDOC_BODY != n->type)
|
||||
return;
|
||||
term_word(p, ")");
|
||||
switch (n->tok) {
|
||||
case (MDOC_Ao):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Aq):
|
||||
term_word(p, ">");
|
||||
break;
|
||||
case (MDOC_Bro):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Brq):
|
||||
term_word(p, "}");
|
||||
break;
|
||||
case (MDOC_Oo):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Op):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Bo):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Bq):
|
||||
term_word(p, "]");
|
||||
break;
|
||||
case (MDOC_Do):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Dq):
|
||||
term_word(p, "''");
|
||||
break;
|
||||
case (MDOC_Po):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Pq):
|
||||
term_word(p, ")");
|
||||
break;
|
||||
case (MDOC__T):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Qo):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Qq):
|
||||
term_word(p, "\"");
|
||||
break;
|
||||
case (MDOC_Ql):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_So):
|
||||
/* FALLTHROUGH */
|
||||
case (MDOC_Sq):
|
||||
term_word(p, "'");
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
/* NOTREACHED */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2005,7 +1979,6 @@ termp_fo_pre(DECL_ARGS)
|
||||
} else if (MDOC_BODY == n->type) {
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, "(");
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -2029,13 +2002,10 @@ termp_fo_post(DECL_ARGS)
|
||||
if (MDOC_BODY != n->type)
|
||||
return;
|
||||
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, ")");
|
||||
|
||||
if (MDOC_SYNPRETTY & n->flags) {
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
if (MDOC_SYNPRETTY & n->flags)
|
||||
term_word(p, ";");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2049,11 +2019,9 @@ termp_bf_pre(DECL_ARGS)
|
||||
else if (MDOC_BLOCK != n->type)
|
||||
return(1);
|
||||
|
||||
assert(n->data.Bf);
|
||||
|
||||
if (FONT_Em == n->data.Bf->font)
|
||||
if (FONT_Em == n->norm->Bf.font)
|
||||
term_fontpush(p, TERMFONT_UNDER);
|
||||
else if (FONT_Sy == n->data.Bf->font)
|
||||
else if (FONT_Sy == n->norm->Bf.font)
|
||||
term_fontpush(p, TERMFONT_BOLD);
|
||||
else
|
||||
term_fontpush(p, TERMFONT_NONE);
|
||||
@ -2085,7 +2053,7 @@ termp_ap_pre(DECL_ARGS)
|
||||
{
|
||||
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, "\\(aq");
|
||||
term_word(p, "'");
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
return(1);
|
||||
}
|
||||
@ -2096,10 +2064,26 @@ static void
|
||||
termp____post(DECL_ARGS)
|
||||
{
|
||||
|
||||
/*
|
||||
* Handle lists of authors. In general, print each followed by
|
||||
* a comma. Don't print the comma if there are only two
|
||||
* authors.
|
||||
*/
|
||||
if (MDOC__A == n->tok && n->next && MDOC__A == n->next->tok)
|
||||
if (NULL == n->next->next || MDOC__A != n->next->next->tok)
|
||||
if (NULL == n->prev || MDOC__A != n->prev->tok)
|
||||
return;
|
||||
|
||||
/* TODO: %U. */
|
||||
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, n->next ? "," : ".");
|
||||
if (NULL == n->parent || MDOC_Rs != n->parent->tok)
|
||||
return;
|
||||
|
||||
if (NULL == n->next) {
|
||||
term_word(p, ".");
|
||||
p->flags |= TERMP_SENTENCE;
|
||||
} else
|
||||
term_word(p, ",");
|
||||
}
|
||||
|
||||
|
||||
@ -2117,23 +2101,24 @@ termp_li_pre(DECL_ARGS)
|
||||
static int
|
||||
termp_lk_pre(DECL_ARGS)
|
||||
{
|
||||
const struct mdoc_node *nn;
|
||||
const struct mdoc_node *nn, *sv;
|
||||
|
||||
term_fontpush(p, TERMFONT_UNDER);
|
||||
nn = n->child;
|
||||
|
||||
if (NULL == nn->next)
|
||||
nn = sv = n->child;
|
||||
|
||||
if (NULL == nn || NULL == nn->next)
|
||||
return(1);
|
||||
|
||||
term_word(p, nn->string);
|
||||
for (nn = nn->next; nn; nn = nn->next)
|
||||
term_word(p, nn->string);
|
||||
|
||||
term_fontpop(p);
|
||||
|
||||
p->flags |= TERMP_NOSPACE;
|
||||
term_word(p, ":");
|
||||
|
||||
term_fontpush(p, TERMFONT_BOLD);
|
||||
for (nn = nn->next; nn; nn = nn->next)
|
||||
term_word(p, nn->string);
|
||||
term_word(p, sv->string);
|
||||
term_fontpop(p);
|
||||
|
||||
return(0);
|
||||
@ -2151,7 +2136,8 @@ termp_bk_pre(DECL_ARGS)
|
||||
case (MDOC_HEAD):
|
||||
return(0);
|
||||
case (MDOC_BODY):
|
||||
p->flags |= TERMP_PREKEEP;
|
||||
if (n->parent->args || 0 == n->prev->nchild)
|
||||
p->flags |= TERMP_PREKEEP;
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
@ -2171,6 +2157,39 @@ termp_bk_post(DECL_ARGS)
|
||||
p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP);
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
termp__t_post(DECL_ARGS)
|
||||
{
|
||||
|
||||
/*
|
||||
* If we're in an `Rs' and there's a journal present, then quote
|
||||
* us instead of underlining us (for disambiguation).
|
||||
*/
|
||||
if (n->parent && MDOC_Rs == n->parent->tok &&
|
||||
n->parent->norm->Rs.child_J)
|
||||
termp_quote_post(p, pair, m, n);
|
||||
|
||||
termp____post(p, pair, m, n);
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp__t_pre(DECL_ARGS)
|
||||
{
|
||||
|
||||
/*
|
||||
* If we're in an `Rs' and there's a journal present, then quote
|
||||
* us instead of underlining us (for disambiguation).
|
||||
*/
|
||||
if (n->parent && MDOC_Rs == n->parent->tok &&
|
||||
n->parent->norm->Rs.child_J)
|
||||
return(termp_quote_pre(p, pair, m, n));
|
||||
|
||||
term_fontpush(p, TERMFONT_UNDER);
|
||||
return(1);
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
termp_under_pre(DECL_ARGS)
|
||||
|
77
external/bsd/mdocml/dist/style.css
vendored
77
external/bsd/mdocml/dist/style.css
vendored
@ -1,77 +0,0 @@
|
||||
div.body { color: #333333;
|
||||
max-width: 800px;
|
||||
padding-left: 10px;
|
||||
font-size: smaller;
|
||||
font-family: Verdana, Tahoma, Arial, sans-serif; }
|
||||
|
||||
div.sec-head { color: #000000;
|
||||
font-weight: bold; }
|
||||
div.sec-body { }
|
||||
div.sec-block { padding-bottom: 1em; }
|
||||
div.ssec-head { color: #000000;
|
||||
font-weight: bold; }
|
||||
div.ssec-body { }
|
||||
div.ssec-block { }
|
||||
|
||||
span.addr { } /* Address (Ad). */
|
||||
span.arg { font-style: italic; } /* Command argument (Ar). */
|
||||
span.author { } /* Author name (An). */
|
||||
span.cmd { font-weight: bold; } /* Command (Cm). */
|
||||
span.config { font-weight: bold; } /* Config statement (Cd). */
|
||||
span.define { } /* Defines (Dv). */
|
||||
span.desc { } /* Nd. After em-dash. */
|
||||
span.diag { font-weight: bold; } /* Diagnostic (Bl -diag). */
|
||||
span.emph { font-style: italic; } /* Emphasis (Em). */
|
||||
span.env { } /* Environment variables (Ev). */
|
||||
span.errno { } /* Error string (Er). */
|
||||
span.farg { font-style: italic; } /* Function argument (Fa, Fn). */
|
||||
span.file { font-style: italic; } /* File (Pa). */
|
||||
span.flag { font-weight: bold; } /* Flag (Fl, Cm). */
|
||||
span.fname { font-weight: bold; } /* Function name (Fa, Fn, Rv). */
|
||||
span.ftype { font-style: italic; } /* Function types (Ft, Fn). */
|
||||
span.includes { font-weight: bold; } /* Header includes (In). */
|
||||
span.lib { } /* Library (Lb). */
|
||||
span.lit { font-family: monospace; } /* Literals (Bf -literal). */
|
||||
span.macro { font-weight: bold; } /* Macro-ish thing (Fd). */
|
||||
span.name { color: #003333; font-weight: bold; } /* Name of utility (Nm). */
|
||||
span.opt { } /* Options (Op, Oo/Oc). */
|
||||
span.ref { } /* Citations (Rs). */
|
||||
span.ref-auth { } /* Reference author (%A). */
|
||||
span.ref-book { font-style: italic; } /* Reference book (%B). */
|
||||
span.ref-city { } /* Reference city (%C). */
|
||||
span.ref-date { } /* Reference date (%D). */
|
||||
span.ref-issue { font-style: italic; } /* Reference issuer/publisher (%I). */
|
||||
span.ref-jrnl { font-style: italic; } /* Reference journal (%J). */
|
||||
span.ref-num { } /* Reference number (%N). */
|
||||
span.ref-opt { } /* Reference optionals (%O). */
|
||||
span.ref-page { } /* Reference page (%P). */
|
||||
span.ref-corp { } /* Reference corporate/foreign author (%Q). */
|
||||
span.ref-rep { } /* Reference report (%R). */
|
||||
span.ref-title { } /* Reference title (%T). */
|
||||
span.ref-vol { } /* Reference volume (%V). */
|
||||
span.symb { font-weight: bold; } /* Symbols. */
|
||||
span.type { font-style: italic; } /* Variable types (Vt). */
|
||||
span.unix { } /* Unices (Ux, Ox, Nx, Fx, Bx, Bsx, Dx). */
|
||||
span.utility { font-weight: bold; } /* Name of utility (Ex). */
|
||||
span.var { font-weight: bold; } /* Variables (Rv). */
|
||||
|
||||
a.link-ext { background: transparent url(external.png) center right no-repeat; padding-right: 12px; }/* Off-site link (Lk). */
|
||||
a.link-includes { } /* Include-file link (In). */
|
||||
a.link-mail { background: transparent url(external.png) center right no-repeat; padding-right: 12px; }/* Mailto links (Mt). */
|
||||
a.link-man { } /* Manual links (Xr). */
|
||||
a.link-sec { text-decoration: none; border-bottom: 1px dotted #339999; } /* Section links (Sx). */
|
||||
|
||||
div.emph { font-style: italic; } /* Emphasis (Bl -emphasis). */
|
||||
div.lit { margin: 3px;
|
||||
padding: 3px;
|
||||
background-color: #EEEEEE;
|
||||
border: 1px solid #339999;
|
||||
color: #000000;
|
||||
font-family: monospace; }
|
||||
div.symb { font-weight: bold; } /* Symbols (Bl -symbolic). */
|
||||
|
||||
table.header { border-bottom: 1px dotted #dddddd;
|
||||
color: #999999; }
|
||||
table.footer { border-top: 1px dotted #dddddd;
|
||||
color: #999999; }
|
||||
|
Loading…
Reference in New Issue
Block a user