diff options
-rw-r--r-- | mdoc.7 | 7 | ||||
-rw-r--r-- | mdoc_action.c | 53 | ||||
-rw-r--r-- | mdoc_html.c | 4 | ||||
-rw-r--r-- | mdoc_macro.c | 4 | ||||
-rw-r--r-- | mdoc_term.c | 4 | ||||
-rw-r--r-- | mdoc_validate.c | 52 |
6 files changed, 61 insertions, 63 deletions
@@ -1,4 +1,4 @@ -.\" $Id: mdoc.7,v 1.163 2010/10/29 10:38:54 schwarze Exp $ +.\" $Id: mdoc.7,v 1.164 2010/11/29 13:02:47 kristaps Exp $ .\" .\" Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> .\" Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org> @@ -15,7 +15,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: October 29 2010 $ +.Dd $Mdocdate: November 29 2010 $ .Dt MDOC 7 .Os .Sh NAME @@ -2124,6 +2124,9 @@ Examples: Format a .Dq mailto: hyperlink. +If an argument is not provided, the string +.Dq \(ti +is used as a default. Its syntax is as follows: .Pp .D1 Pf \. Sx \&Mt Cm address diff --git a/mdoc_action.c b/mdoc_action.c index d0b6411e..bbe110d4 100644 --- a/mdoc_action.c +++ b/mdoc_action.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_action.c,v 1.79 2010/11/29 12:22:28 kristaps Exp $ */ +/* $Id: mdoc_action.c,v 1.80 2010/11/29 13:02:47 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> * @@ -51,7 +51,6 @@ struct actions { static int concat(struct mdoc *, char *, const struct mdoc_node *, size_t); -static int post_ar(POST_ARGS); static int post_at(POST_ARGS); static int post_bl(POST_ARGS); static int post_bl_head(POST_ARGS); @@ -61,7 +60,6 @@ static int post_dd(POST_ARGS); static int post_display(POST_ARGS); static int post_dt(POST_ARGS); static int post_lb(POST_ARGS); -static int post_li(POST_ARGS); static int post_nm(POST_ARGS); static int post_os(POST_ARGS); static int post_pa(POST_ARGS); @@ -90,7 +88,7 @@ static const struct actions mdoc_actions[MDOC_MAX] = { { NULL, NULL }, /* It */ { NULL, NULL }, /* Ad */ { NULL, NULL }, /* An */ - { NULL, post_ar }, /* Ar */ + { NULL, NULL }, /* Ar */ { NULL, NULL }, /* Cd */ { NULL, NULL }, /* Cm */ { NULL, NULL }, /* Dv */ @@ -104,7 +102,7 @@ static const struct actions mdoc_actions[MDOC_MAX] = { { NULL, NULL }, /* Ft */ { NULL, NULL }, /* Ic */ { NULL, NULL }, /* In */ - { NULL, post_li }, /* Li */ + { NULL, NULL }, /* Li */ { NULL, NULL }, /* Nd */ { NULL, post_nm }, /* Nm */ { NULL, NULL }, /* Op */ @@ -857,51 +855,6 @@ post_pa(POST_ARGS) /* - * Empty `Li' macros get an empty string to make front-ends add an extra - * space. - */ -static int -post_li(POST_ARGS) -{ - struct mdoc_node *np; - - if (n->child) - return(1); - - np = n; - m->next = MDOC_NEXT_CHILD; - if ( ! mdoc_word_alloc(m, n->line, n->pos, "")) - return(0); - m->last = np; - return(1); -} - - -/* - * The `Ar' macro defaults to two strings "file ..." if no value is - * provided as an argument. - */ -static int -post_ar(POST_ARGS) -{ - struct mdoc_node *np; - - if (n->child) - return(1); - - np = n; - m->next = MDOC_NEXT_CHILD; - /* XXX: make into macro values. */ - if ( ! mdoc_word_alloc(m, n->line, n->pos, "file")) - return(0); - if ( ! mdoc_word_alloc(m, n->line, n->pos, "...")) - return(0); - m->last = np; - return(1); -} - - -/* * Parse the date field in `Dd'. */ static int diff --git a/mdoc_html.c b/mdoc_html.c index db55fffe..bdf00386 100644 --- a/mdoc_html.c +++ b/mdoc_html.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_html.c,v 1.112 2010/10/23 23:31:10 schwarze Exp $ */ +/* $Id: mdoc_html.c,v 1.113 2010/11/29 13:02:47 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> * @@ -1675,7 +1675,7 @@ mdoc_lk_pre(MDOC_ARGS) PAIR_HREF_INIT(&tag[1], nn->string); print_otag(h, TAG_A, 2, tag); - if (NULL == nn->next) + if (NULL == nn || NULL == nn->next) return(1); for (nn = nn->next; nn; nn = nn->next) diff --git a/mdoc_macro.c b/mdoc_macro.c index eba97686..37824f9e 100644 --- a/mdoc_macro.c +++ b/mdoc_macro.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_macro.c,v 1.95 2010/10/01 21:51:13 schwarze Exp $ */ +/* $Id: mdoc_macro.c,v 1.96 2010/11/29 13:02:47 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org> @@ -790,7 +790,7 @@ in_line(MACRO_PROT_ARGS) /* FALLTHROUGH */ case (MDOC_Fl): /* FALLTHROUGH */ - case (MDOC_Lk): + case (MDOC_Mt): /* FALLTHROUGH */ case (MDOC_Nm): /* FALLTHROUGH */ diff --git a/mdoc_term.c b/mdoc_term.c index 06947fcd..15568dd2 100644 --- a/mdoc_term.c +++ b/mdoc_term.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_term.c,v 1.194 2010/10/23 23:31:10 schwarze Exp $ */ +/* $Id: mdoc_term.c,v 1.195 2010/11/29 13:02:47 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org> @@ -2076,7 +2076,7 @@ termp_lk_pre(DECL_ARGS) nn = sv = n->child; - if (NULL == nn->next) + if (NULL == nn || NULL == nn->next) return(1); for (nn = nn->next; nn; nn = nn->next) diff --git a/mdoc_validate.c b/mdoc_validate.c index 3acab0dc..a10be56c 100644 --- a/mdoc_validate.c +++ b/mdoc_validate.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_validate.c,v 1.122 2010/11/29 12:22:28 kristaps Exp $ */ +/* $Id: mdoc_validate.c,v 1.123 2010/11/29 13:02:47 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> * @@ -85,6 +85,8 @@ static int post_at(POST_ARGS); static int post_bf(POST_ARGS); static int post_bl(POST_ARGS); static int post_bl_head(POST_ARGS); +static int post_defaults(POST_ARGS); +static int post_eoln(POST_ARGS); static int post_dt(POST_ARGS); static int post_it(POST_ARGS); static int post_lb(POST_ARGS); @@ -95,7 +97,6 @@ static int post_sh(POST_ARGS); static int post_sh_body(POST_ARGS); static int post_sh_head(POST_ARGS); static int post_st(POST_ARGS); -static int post_eoln(POST_ARGS); static int post_vt(POST_ARGS); static int pre_an(PRE_ARGS); static int pre_bd(PRE_ARGS); @@ -117,6 +118,7 @@ static v_post posts_bf[] = { hwarn_le1, post_bf, NULL }; static v_post posts_bl[] = { bwarn_ge1, post_bl, NULL }; static v_post posts_bool[] = { eerr_eq1, ebool, NULL }; static v_post posts_eoln[] = { post_eoln, NULL }; +static v_post posts_defaults[] = { post_defaults, NULL }; static v_post posts_dt[] = { post_dt, NULL }; static v_post posts_fo[] = { hwarn_eq1, bwarn_ge1, NULL }; static v_post posts_it[] = { post_it, NULL }; @@ -167,7 +169,7 @@ const struct valids mdoc_valids[MDOC_MAX] = { { pres_it, posts_it }, /* It */ { NULL, posts_text }, /* Ad */ { pres_an, posts_an }, /* An */ - { NULL, NULL }, /* Ar */ + { NULL, posts_defaults }, /* Ar */ { NULL, posts_text }, /* Cd */ { NULL, NULL }, /* Cm */ { NULL, NULL }, /* Dv */ @@ -181,7 +183,7 @@ const struct valids mdoc_valids[MDOC_MAX] = { { NULL, posts_wtext }, /* Ft */ { NULL, posts_text }, /* Ic */ { NULL, posts_text1 }, /* In */ - { NULL, NULL }, /* Li */ + { NULL, posts_defaults }, /* Li */ { NULL, posts_nd }, /* Nd */ { NULL, posts_nm }, /* Nm */ { NULL, posts_wline }, /* Op */ @@ -260,7 +262,7 @@ const struct valids mdoc_valids[MDOC_MAX] = { { NULL, posts_lb }, /* Lb */ { NULL, posts_notext }, /* Lp */ { NULL, posts_text }, /* Lk */ - { NULL, posts_text }, /* Mt */ + { NULL, posts_defaults }, /* Mt */ { NULL, posts_wline }, /* Brq */ { NULL, NULL }, /* Bro */ { NULL, NULL }, /* Brc */ @@ -1133,6 +1135,46 @@ post_nm(POST_ARGS) return(mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NONAME)); } +static int +post_defaults(POST_ARGS) +{ + struct mdoc_node *nn; + + /* + * The `Ar' defaults to "file ..." if no value is provided as an + * argument; the `Mt' macro uses "~"; the `Li' just gets an + * empty string. + */ + + if (mdoc->last->child) + return(1); + + nn = mdoc->last; + mdoc->next = MDOC_NEXT_CHILD; + + switch (nn->tok) { + case (MDOC_Ar): + if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "file")) + return(0); + if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "...")) + return(0); + break; + case (MDOC_Li): + if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "")) + return(0); + break; + case (MDOC_Mt): + if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "~")) + return(0); + break; + default: + abort(); + /* NOTREACHED */ + } + + mdoc->last = nn; + return(1); +} static int post_at(POST_ARGS) |