diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2009-03-05 12:08:52 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2009-03-05 12:08:52 +0000 |
commit | 6936c4e5a0bd4bddcfd7c9d08d801aba0415dbad (patch) | |
tree | e85d890b346e499d7bd9aab58c9c512adfbdae36 /action.c | |
parent | 9e132a57b087be87cd731dd96397d9cc75b7bfa3 (diff) | |
download | mandoc-6936c4e5a0bd4bddcfd7c9d08d801aba0415dbad.tar.gz |
Added argv regression tests.
Table-ised argument flags in argv.c.
Diffstat (limited to 'action.c')
-rw-r--r-- | action.c | 39 |
1 files changed, 35 insertions, 4 deletions
@@ -39,11 +39,12 @@ struct actions { static int post_bl(struct mdoc *); static int post_bl_width(struct mdoc *); static int post_bl_tagwidth(struct mdoc *); -static int post_sh(struct mdoc *); -static int post_os(struct mdoc *); -static int post_dt(struct mdoc *); static int post_dd(struct mdoc *); +static int post_dt(struct mdoc *); +static int post_ex(struct mdoc *); static int post_nm(struct mdoc *); +static int post_os(struct mdoc *); +static int post_sh(struct mdoc *); static int post_prologue(struct mdoc *); @@ -72,7 +73,7 @@ const struct actions mdoc_actions[MDOC_MAX] = { { NULL }, /* Dv */ { NULL }, /* Er */ { NULL }, /* Ev */ - { NULL }, /* Ex */ + { post_ex }, /* Ex */ { NULL }, /* Fa */ { NULL }, /* Fd */ { NULL }, /* Fl */ @@ -160,6 +161,36 @@ const struct actions mdoc_actions[MDOC_MAX] = { static int +post_ex(struct mdoc *mdoc) +{ + + /* + * If `.Ex -std' is invoked without an argument, fill it in with + * our name (if it's been set). + */ + + if (0 == mdoc->last->data.elem.argc) + return(1); + + assert(1 == mdoc->last->data.elem.argc); + if (1 == mdoc->last->data.elem.argv[0].sz) + return(1); + assert(0 == mdoc->last->data.elem.argv[0].sz); + + if (NULL == mdoc->meta.name) + return(mdoc_err(mdoc, "default name not yet set")); + + mdoc_msg(mdoc, "writing %s argument: %s", + mdoc_argnames[MDOC_Std], mdoc->meta.name); + + mdoc->last->data.elem.argv[0].sz = 1; + mdoc->last->data.elem.argv[0].value = xcalloc(1, sizeof(char *)); + mdoc->last->data.elem.argv[0].value[0] = xstrdup(mdoc->meta.name); + return(1); +} + + +static int post_nm(struct mdoc *mdoc) { char buf[64]; |