summaryrefslogtreecommitdiffstats
path: root/dummy.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2008-11-24 18:32:39 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2008-11-24 18:32:39 +0000
commit1b0603f4cce3fd3ce20d3e5654cc459591777221 (patch)
tree04ce960bcf138ce15e17090161e65e52600624fb /dummy.c
parent3238820d08da942be84ccab704e810b0f6d8bcf4 (diff)
downloadmandoc-1b0603f4cce3fd3ce20d3e5654cc459591777221.tar.gz
Generic roff_layout for layout tokens.
Diffstat (limited to 'dummy.c')
-rw-r--r--dummy.c87
1 files changed, 86 insertions, 1 deletions
diff --git a/dummy.c b/dummy.c
index 7e9cfdf2..0f0cd7ac 100644
--- a/dummy.c
+++ b/dummy.c
@@ -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);
}