=================================================================== RCS file: /cvs/mandoc/Attic/mdoc_action.c,v retrieving revision 1.6 retrieving revision 1.13 diff -u -p -r1.6 -r1.13 --- mandoc/Attic/mdoc_action.c 2009/04/06 08:53:12 1.6 +++ mandoc/Attic/mdoc_action.c 2009/06/17 10:53:32 1.13 @@ -1,20 +1,18 @@ -/* $Id: mdoc_action.c,v 1.6 2009/04/06 08:53:12 kristaps Exp $ */ +/* $Id: mdoc_action.c,v 1.13 2009/06/17 10:53:32 kristaps Exp $ */ /* - * Copyright (c) 2008, 2009 Kristaps Dzonsons + * Copyright (c) 2008, 2009 Kristaps Dzonsons * * 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. + * 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. + * 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. */ #include @@ -58,6 +56,7 @@ static int post_bl_tagwidth(POST_ARGS); static int post_dd(POST_ARGS); static int post_display(POST_ARGS); static int post_dt(POST_ARGS); +static int post_lk(POST_ARGS); static int post_nm(POST_ARGS); static int post_os(POST_ARGS); static int post_prol(POST_ARGS); @@ -72,7 +71,7 @@ static int pre_dl(PRE_ARGS); #define nerr(m, n, t) perr((m), (n)->line, (n)->pos, (t)) const struct actions mdoc_actions[MDOC_MAX] = { - { NULL, NULL }, /* \" */ + { NULL, NULL }, /* Ap */ { NULL, post_dd }, /* Dd */ { NULL, post_dt }, /* Dt */ { NULL, post_os }, /* Os */ @@ -179,9 +178,8 @@ const struct actions mdoc_actions[MDOC_MAX] = { { NULL, NULL }, /* Fr */ { NULL, NULL }, /* Ud */ { NULL, NULL }, /* Lb */ - { NULL, NULL }, /* Ap */ { NULL, NULL }, /* Lp */ - { NULL, NULL }, /* Lk */ + { NULL, post_lk }, /* Lk */ { NULL, NULL }, /* Mt */ { NULL, NULL }, /* Brq */ { NULL, NULL }, /* Bro */ @@ -344,19 +342,13 @@ post_nm(POST_ARGS) if (m->meta.name) return(1); - printf("bar\n"); - buf[0] = 0; if ( ! concat(m, m->last->child, buf, sizeof(buf))) return(0); - printf("foo\n"); - if (NULL == (m->meta.name = strdup(buf))) return(verr(m, EMALLOC)); - printf("baz\n"); - return(1); } @@ -523,8 +515,8 @@ post_os(POST_ARGS) if (NULL == (m->meta.os = strdup(buf))) return(verr(m, EMALLOC)); - m->lastnamed = m->lastsec = SEC_BODY; + m->flags |= MDOC_PBODY; return(post_prol(m)); } @@ -545,7 +537,8 @@ post_bl_tagwidth(struct mdoc *m) * width if a macro. */ - if ((n = m->last->body->child)) { + n = m->last->body->child; + if (n) { assert(MDOC_BLOCK == n->type); assert(MDOC_It == n->tok); n = n->head->child; @@ -672,6 +665,27 @@ post_bl(POST_ARGS) if ( ! post_bl_width(m)) return(0); + return(1); +} + + +static int +post_lk(POST_ARGS) +{ + struct mdoc_node *n; + + if (m->last->child) + return(1); + + n = m->last; + m->next = MDOC_NEXT_CHILD; + /* FIXME: this isn't documented anywhere! */ + if ( ! mdoc_word_alloc(m, m->last->line, + m->last->pos, "~")) + return(0); + + m->last = n; + m->next = MDOC_NEXT_SIBLING; return(1); }