summaryrefslogtreecommitdiffstatshomepage
path: root/dummy.c
diff options
context:
space:
mode:
Diffstat (limited to 'dummy.c')
-rw-r--r--dummy.c89
1 files changed, 87 insertions, 2 deletions
diff --git a/dummy.c b/dummy.c
index 96684baa..89b8f46b 100644
--- a/dummy.c
+++ b/dummy.c
@@ -1,4 +1,4 @@
-/* $Id: dummy.c,v 1.3 2008/11/24 14:24:55 kristaps Exp $ */
+/* $Id: dummy.c,v 1.4 2008/11/24 18:32:39 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -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);
}