version 1.23, 2008/12/09 17:09:12 |
version 1.27, 2008/12/10 12:09:47 |
|
|
#include <stdio.h> |
#include <stdio.h> |
#include <string.h> |
#include <string.h> |
|
|
#include "private.h" |
|
#include "ml.h" |
#include "ml.h" |
|
|
/* TODO: literal tokens. */ |
/* TODO: literal tokens. */ |
|
|
#define COLUMNS 72 |
|
#define INDENT 4 |
|
#define MAXINDENT 10 |
|
|
|
enum md_tok { |
enum md_tok { |
MD_TEXT, |
MD_TEXT, |
MD_INLINE_IN, |
MD_INLINE_IN, |
MD_INLINE_OUT, |
MD_INLINE_OUT, |
MD_BLK_IN, |
MD_BLK_IN, |
MD_BLK_OUT, |
MD_BLK_OUT |
}; |
}; |
|
|
struct md_mlg { |
struct md_mlg { |
Line 63 static int mlg_roffmsg(void *arg, |
|
Line 58 static int mlg_roffmsg(void *arg, |
|
const char *, const char *); |
const char *, const char *); |
static int mlg_roffhead(void *, const struct tm *, |
static int mlg_roffhead(void *, const struct tm *, |
const char *, const char *, |
const char *, const char *, |
enum roffmsec, const char *); |
enum roffmsec, enum roffvol); |
static int mlg_rofftail(void *); |
static int mlg_rofftail(void *, const struct tm *, |
|
const char *, const char *, |
|
enum roffmsec, enum roffvol); |
static int mlg_roffin(void *, int, |
static int mlg_roffin(void *, int, |
int *, const char **); |
int *, const char **); |
static int mlg_roffdata(void *, int, |
static int mlg_roffdata(void *, int, |
Line 239 mlg_endtag(struct md_mlg *p, enum md_ns ns, int tok) |
|
Line 236 mlg_endtag(struct md_mlg *p, enum md_ns ns, int tok) |
|
static int |
static int |
mlg_indent(struct md_mlg *p) |
mlg_indent(struct md_mlg *p) |
{ |
{ |
size_t count; |
|
|
|
count = p->indent > MAXINDENT ? |
|
(size_t)MAXINDENT : p->indent; |
|
count *= INDENT; |
|
|
|
assert(0 == p->pos); |
assert(0 == p->pos); |
return(ml_putchars(p->mbuf, ' ', count, &p->pos)); |
return(ml_putchars(p->mbuf, ' ', INDENT_SZ * |
|
INDENT(p->indent), &p->pos)); |
} |
} |
|
|
|
|
Line 325 mlg_data(struct md_mlg *p, int space, |
|
Line 318 mlg_data(struct md_mlg *p, int space, |
|
if ( ! mlg_nstring(p, start, buf, sz)) |
if ( ! mlg_nstring(p, start, buf, sz)) |
return(0); |
return(0); |
|
|
if (p->indent * INDENT + sz >= COLUMNS) |
if (INDENT(p->indent) * INDENT_SZ + sz >= COLUMNS) |
if ( ! mlg_newline(p)) |
if ( ! mlg_newline(p)) |
return(0); |
return(0); |
|
|
Line 413 mlg_alloc(const struct md_args *args, |
|
Line 406 mlg_alloc(const struct md_args *args, |
|
|
|
static int |
static int |
mlg_roffhead(void *arg, const struct tm *tm, const char *os, |
mlg_roffhead(void *arg, const struct tm *tm, const char *os, |
const char *title, enum roffmsec sec, const char *vol) |
const char *title, enum roffmsec sec, enum roffvol vol) |
{ |
{ |
struct md_mlg *p; |
struct md_mlg *p; |
|
|
Line 422 mlg_roffhead(void *arg, const struct tm *tm, const cha |
|
Line 415 mlg_roffhead(void *arg, const struct tm *tm, const cha |
|
|
|
mlg_mode(p, MD_BLK_IN); |
mlg_mode(p, MD_BLK_IN); |
|
|
if ( ! (*p->cbs.ml_begin)(p->mbuf, p->args, tm, os, title, sec, vol)) |
if ( ! (*p->cbs.ml_begin)(p->mbuf, p->args, |
|
tm, os, title, sec, vol)) |
return(0); |
return(0); |
|
|
p->indent++; |
p->indent++; |
Line 431 mlg_roffhead(void *arg, const struct tm *tm, const cha |
|
Line 425 mlg_roffhead(void *arg, const struct tm *tm, const cha |
|
|
|
|
|
static int |
static int |
mlg_rofftail(void *arg) |
mlg_rofftail(void *arg, const struct tm *tm, const char *os, |
|
const char *title, enum roffmsec sec, enum roffvol vol) |
{ |
{ |
struct md_mlg *p; |
struct md_mlg *p; |
|
|
Line 442 mlg_rofftail(void *arg) |
|
Line 437 mlg_rofftail(void *arg) |
|
if ( ! mlg_newline(p)) |
if ( ! mlg_newline(p)) |
return(0); |
return(0); |
|
|
if ( ! (*p->cbs.ml_end)(p->mbuf, p->args)) |
if ( ! (*p->cbs.ml_end)(p->mbuf, p->args, |
|
tm, os, title, sec, vol)) |
return(0); |
return(0); |
|
|
mlg_mode(p, MD_BLK_OUT); |
mlg_mode(p, MD_BLK_OUT); |
|
|
return(mlg_newline(p)); |
return(mlg_newline(p)); |
} |
} |
|
|
Line 503 mlg_ref_special(struct md_mlg *p, int tok, |
|
Line 498 mlg_ref_special(struct md_mlg *p, int tok, |
|
} |
} |
|
|
|
|
|
/* ARGSUSED */ |
static int |
static int |
mlg_formatted_special(struct md_mlg *p, int tok, const char *start, |
mlg_formatted_special(struct md_mlg *p, int tok, const char *start, |
const int *argc, const char **argv, const char **more) |
const int *argc, const char **argv, const char **more) |