diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2008-11-24 18:32:39 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2008-11-24 18:32:39 +0000 |
commit | 1b0603f4cce3fd3ce20d3e5654cc459591777221 (patch) | |
tree | 04ce960bcf138ce15e17090161e65e52600624fb /dummy.c | |
parent | 3238820d08da942be84ccab704e810b0f6d8bcf4 (diff) | |
download | mandoc-1b0603f4cce3fd3ce20d3e5654cc459591777221.tar.gz |
Generic roff_layout for layout tokens.
Diffstat (limited to 'dummy.c')
-rw-r--r-- | dummy.c | 87 |
1 files changed, 86 insertions, 1 deletions
@@ -18,17 +18,91 @@ */ #include <assert.h> #include <err.h> +#include <stdio.h> #include <stdlib.h> +#include <string.h> #include "libmdocml.h" #include "private.h" +static roffin in[ROFF_MAX]; +static roffout out[ROFF_MAX]; +static roffblkin blkin[ROFF_MAX]; +static roffblkout blkout[ROFF_MAX]; + +static int md_dummy_blk_in(int); +static int md_dummy_blk_out(int); +static int md_dummy_text_in(int, int *, char **); +static int md_dummy_text_out(int); + +static void dbg_indent(void); + +static int dbg_lvl = 0; + struct md_dummy { struct rofftree *tree; }; +static void +dbg_indent(void) +{ + char buf[128]; + int i; + + *buf = 0; + assert(dbg_lvl >= 0); + for (i = 0; i < dbg_lvl; i++) + (void)strncat(buf, " ", sizeof(buf) - 1); + + (void)printf("%s", buf); +} + + +static int +md_dummy_blk_in(int tok) +{ + + dbg_indent(); + (void)printf("+++blk\n"); + dbg_lvl++; + return(1); +} + + +static int +md_dummy_blk_out(int tok) +{ + + assert(dbg_lvl > 0); + dbg_lvl--; + dbg_indent(); + (void)printf("---blk\n"); + return(1); +} + + +static int +md_dummy_text_in(int tok, int *argcp, char **argvp) +{ + + dbg_indent(); + (void)printf("in: text\n"); + return(1); +} + + +static int +md_dummy_text_out(int tok) +{ + + dbg_indent(); + (void)printf("out: text\n"); + return(1); +} + + int md_line_dummy(void *arg, char *buf, size_t sz) { @@ -58,13 +132,24 @@ md_init_dummy(const struct md_args *args, struct md_mbuf *mbuf, const struct md_rbuf *rbuf) { struct md_dummy *p; + int i; + + for (i = 0; i < ROFF_MAX; i++) { + in[i] = md_dummy_text_in; + out[i] = md_dummy_text_out; + blkin[i] = md_dummy_blk_in; + blkout[i] = md_dummy_blk_out; + } if (NULL == (p = malloc(sizeof(struct md_dummy)))) { warn("malloc"); return(NULL); } - if (NULL == (p->tree = roff_alloc(args, mbuf, rbuf))) { + p->tree = roff_alloc + (args, mbuf, rbuf, in, out, blkin, blkout); + + if (NULL == p->tree) { free(p); return(NULL); } |