version 1.6, 2008/11/25 16:49:57 |
version 1.10, 2008/11/27 17:27:50 |
|
|
#define strlcat strncat |
#define strlcat strncat |
#endif |
#endif |
|
|
static int md_dummy_blk_in(int); |
static int md_dummy_blk_in(const struct md_args *, int); |
static int md_dummy_blk_out(int); |
static int md_dummy_blk_out(const struct md_args *, int); |
static int md_dummy_text_in(int, int *, char **); |
static int md_dummy_text_in(const struct md_args *, int, |
static int md_dummy_text_out(int); |
int *, char **); |
|
static int md_dummy_text_out(const struct md_args *, int); |
|
static int md_dummy_special(int); |
|
static int md_dummy_head(void); |
|
static int md_dummy_tail(void); |
|
static void md_dummy_msg(const struct md_args *, |
|
enum roffmsg, const char *, |
|
const char *, const char *, |
|
int, char *); |
|
|
static void dbg_prologue(const char *); |
static void dbg_prologue(const char *); |
static void dbg_epilogue(void); |
static void dbg_epilogue(void); |
Line 42 static char dbg_line[72]; |
|
Line 50 static char dbg_line[72]; |
|
|
|
struct md_dummy { |
struct md_dummy { |
struct rofftree *tree; |
struct rofftree *tree; |
|
struct roffcb cb; |
}; |
}; |
|
|
|
|
|
int |
|
md_line_dummy(void *arg, char *buf, size_t sz) |
|
{ |
|
struct md_dummy *p; |
|
|
|
p = (struct md_dummy *)arg; |
|
return(roff_engine(p->tree, buf, sz)); |
|
} |
|
|
|
|
|
int |
|
md_exit_dummy(void *data, int flush) |
|
{ |
|
int c; |
|
struct md_dummy *p; |
|
|
|
p = (struct md_dummy *)data; |
|
c = roff_free(p->tree, flush); |
|
free(p); |
|
|
|
return(c); |
|
} |
|
|
|
|
|
void * |
|
md_init_dummy(const struct md_args *args, |
|
struct md_mbuf *mbuf, const struct md_rbuf *rbuf) |
|
{ |
|
struct md_dummy *p; |
|
|
|
if (NULL == (p = malloc(sizeof(struct md_dummy)))) { |
|
warn("malloc"); |
|
return(NULL); |
|
} |
|
|
|
p->cb.roffhead = md_dummy_head; |
|
p->cb.rofftail = md_dummy_tail; |
|
p->cb.roffin = md_dummy_text_in; |
|
p->cb.roffout = md_dummy_text_out; |
|
p->cb.roffblkin = md_dummy_blk_in; |
|
p->cb.roffblkout = md_dummy_blk_out; |
|
p->cb.roffspecial = md_dummy_special; |
|
p->cb.roffmsg = md_dummy_msg; |
|
|
|
p->tree = roff_alloc(args, mbuf, rbuf, &p->cb); |
|
|
|
if (NULL == p->tree) { |
|
free(p); |
|
return(NULL); |
|
} |
|
|
|
return(p); |
|
} |
|
|
|
|
static void |
static void |
dbg_prologue(const char *p) |
dbg_prologue(const char *p) |
{ |
{ |
Line 67 dbg_epilogue(void) |
|
Line 132 dbg_epilogue(void) |
|
|
|
|
|
static int |
static int |
md_dummy_blk_in(int tok) |
md_dummy_head(void) |
{ |
{ |
|
|
|
return(1); |
|
} |
|
|
|
|
|
static int |
|
md_dummy_tail(void) |
|
{ |
|
|
|
return(1); |
|
} |
|
|
|
|
|
static int |
|
md_dummy_special(int tok) |
|
{ |
|
|
|
dbg_prologue("noop"); |
|
(void)strlcat(dbg_line, toknames[tok], sizeof(dbg_line) - 1); |
|
dbg_epilogue(); |
|
|
|
return(1); |
|
} |
|
|
|
|
|
static int |
|
md_dummy_blk_in(const struct md_args *args, int tok) |
|
{ |
|
|
|
if (args->verbosity < 1) |
|
return(1); |
|
|
dbg_prologue("blk"); |
dbg_prologue("blk"); |
(void)strlcat(dbg_line, toknames[tok], sizeof(dbg_line) - 1); |
(void)strlcat(dbg_line, toknames[tok], sizeof(dbg_line) - 1); |
dbg_epilogue(); |
dbg_epilogue(); |
Line 80 md_dummy_blk_in(int tok) |
|
Line 176 md_dummy_blk_in(int tok) |
|
|
|
|
|
static int |
static int |
md_dummy_blk_out(int tok) |
md_dummy_blk_out(const struct md_args *args, int tok) |
{ |
{ |
|
|
|
if (args->verbosity < 1) |
|
return(1); |
|
|
dbg_lvl--; |
dbg_lvl--; |
return(1); |
return(1); |
} |
} |
|
|
|
|
/* ARGSUSED */ |
|
static int |
static int |
md_dummy_text_in(int tok, int *argcp, char **argvp) |
md_dummy_text_in(const struct md_args *args, |
|
int tok, int *argcp, char **argvp) |
{ |
{ |
|
|
|
if (args->verbosity < 1) |
|
return(1); |
|
|
dbg_prologue("text"); |
dbg_prologue("text"); |
(void)strlcat(dbg_line, toknames[tok], sizeof(dbg_line) - 1); |
(void)strlcat(dbg_line, toknames[tok], sizeof(dbg_line) - 1); |
(void)strlcat(dbg_line, " ", sizeof(dbg_line) - 1); |
(void)strlcat(dbg_line, " ", sizeof(dbg_line) - 1); |
Line 118 md_dummy_text_in(int tok, int *argcp, char **argvp) |
|
Line 220 md_dummy_text_in(int tok, int *argcp, char **argvp) |
|
|
|
|
|
static int |
static int |
md_dummy_text_out(int tok) |
md_dummy_text_out(const struct md_args *args, int tok) |
{ |
{ |
|
|
return(1); |
return(1); |
} |
} |
|
|
|
|
int |
static void |
md_line_dummy(void *arg, char *buf, size_t sz) |
md_dummy_msg(const struct md_args *args, enum roffmsg lvl, |
|
const char *buf, const char *pos, |
|
const char *name, int line, char *msg) |
{ |
{ |
struct md_dummy *p; |
char *p; |
|
|
p = (struct md_dummy *)arg; |
switch (lvl) { |
return(roff_engine(p->tree, buf, sz)); |
case (ROFF_WARN): |
} |
if ( ! (MD_WARN_ALL & args->warnings)) |
|
return; |
|
p = "warning"; |
int |
break; |
md_exit_dummy(void *data, int flush) |
case (ROFF_ERROR): |
{ |
p = "error"; |
int c; |
break; |
struct md_dummy *p; |
|
|
|
p = (struct md_dummy *)data; |
|
c = roff_free(p->tree, flush); |
|
free(p); |
|
|
|
return(c); |
|
} |
|
|
|
|
|
void * |
|
md_init_dummy(const struct md_args *args, |
|
struct md_mbuf *mbuf, const struct md_rbuf *rbuf) |
|
{ |
|
struct md_dummy *p; |
|
|
|
if (NULL == (p = malloc(sizeof(struct md_dummy)))) { |
|
warn("malloc"); |
|
return(NULL); |
|
} |
} |
|
|
p->tree = roff_alloc(args, mbuf, rbuf, |
assert(pos >= buf); |
md_dummy_text_in, md_dummy_text_out, |
(void)fprintf(stderr, "%s:%d: %s: %s\n", name, line, p, msg); |
md_dummy_blk_in, md_dummy_blk_out); |
|
|
|
if (NULL == p->tree) { |
|
free(p); |
|
return(NULL); |
|
} |
|
|
|
return(p); |
|
} |
} |
|
|