version 1.116, 2010/01/07 10:24:43 |
version 1.119, 2010/04/03 13:02:35 |
Line 143 const char * const *mdoc_argnames = __mdoc_argnames; |
|
Line 143 const char * const *mdoc_argnames = __mdoc_argnames; |
|
static void mdoc_free1(struct mdoc *); |
static void mdoc_free1(struct mdoc *); |
static void mdoc_alloc1(struct mdoc *); |
static void mdoc_alloc1(struct mdoc *); |
static struct mdoc_node *node_alloc(struct mdoc *, int, int, |
static struct mdoc_node *node_alloc(struct mdoc *, int, int, |
int, enum mdoc_type); |
enum mdoct, enum mdoc_type); |
static int node_append(struct mdoc *, |
static int node_append(struct mdoc *, |
struct mdoc_node *); |
struct mdoc_node *); |
static int parsetext(struct mdoc *, int, char *); |
static int parsetext(struct mdoc *, int, char *); |
Line 341 mdoc_err(struct mdoc *m, int line, int pos, int iserr, |
|
Line 341 mdoc_err(struct mdoc *m, int line, int pos, int iserr, |
|
|
|
|
|
int |
int |
mdoc_macro(struct mdoc *m, int tok, |
mdoc_macro(struct mdoc *m, enum mdoct tok, |
int ln, int pp, int *pos, char *buf) |
int ln, int pp, int *pos, char *buf) |
{ |
{ |
|
|
|
assert(tok < MDOC_MAX); |
/* |
/* |
* If we're in the prologue, deny "body" macros. Similarly, if |
* If we're in the prologue, deny "body" macros. Similarly, if |
* we're in the body, deny prologue calls. |
* we're in the body, deny prologue calls. |
Line 424 node_append(struct mdoc *mdoc, struct mdoc_node *p) |
|
Line 426 node_append(struct mdoc *mdoc, struct mdoc_node *p) |
|
|
|
|
|
static struct mdoc_node * |
static struct mdoc_node * |
node_alloc(struct mdoc *m, int line, |
node_alloc(struct mdoc *m, int line, int pos, |
int pos, int tok, enum mdoc_type type) |
enum mdoct tok, enum mdoc_type type) |
{ |
{ |
struct mdoc_node *p; |
struct mdoc_node *p; |
|
|
Line 434 node_alloc(struct mdoc *m, int line, |
|
Line 436 node_alloc(struct mdoc *m, int line, |
|
p->line = line; |
p->line = line; |
p->pos = pos; |
p->pos = pos; |
p->tok = tok; |
p->tok = tok; |
if (MDOC_TEXT != (p->type = type)) |
p->type = type; |
assert(p->tok >= 0); |
|
|
|
return(p); |
return(p); |
} |
} |
|
|
|
|
int |
int |
mdoc_tail_alloc(struct mdoc *m, int line, int pos, int tok) |
mdoc_tail_alloc(struct mdoc *m, int line, int pos, enum mdoct tok) |
{ |
{ |
struct mdoc_node *p; |
struct mdoc_node *p; |
|
|
Line 455 mdoc_tail_alloc(struct mdoc *m, int line, int pos, int |
|
Line 456 mdoc_tail_alloc(struct mdoc *m, int line, int pos, int |
|
|
|
|
|
int |
int |
mdoc_head_alloc(struct mdoc *m, int line, int pos, int tok) |
mdoc_head_alloc(struct mdoc *m, int line, int pos, enum mdoct tok) |
{ |
{ |
struct mdoc_node *p; |
struct mdoc_node *p; |
|
|
Line 471 mdoc_head_alloc(struct mdoc *m, int line, int pos, int |
|
Line 472 mdoc_head_alloc(struct mdoc *m, int line, int pos, int |
|
|
|
|
|
int |
int |
mdoc_body_alloc(struct mdoc *m, int line, int pos, int tok) |
mdoc_body_alloc(struct mdoc *m, int line, int pos, enum mdoct tok) |
{ |
{ |
struct mdoc_node *p; |
struct mdoc_node *p; |
|
|
Line 485 mdoc_body_alloc(struct mdoc *m, int line, int pos, int |
|
Line 486 mdoc_body_alloc(struct mdoc *m, int line, int pos, int |
|
|
|
int |
int |
mdoc_block_alloc(struct mdoc *m, int line, int pos, |
mdoc_block_alloc(struct mdoc *m, int line, int pos, |
int tok, struct mdoc_arg *args) |
enum mdoct tok, struct mdoc_arg *args) |
{ |
{ |
struct mdoc_node *p; |
struct mdoc_node *p; |
|
|
Line 502 mdoc_block_alloc(struct mdoc *m, int line, int pos, |
|
Line 503 mdoc_block_alloc(struct mdoc *m, int line, int pos, |
|
|
|
int |
int |
mdoc_elem_alloc(struct mdoc *m, int line, int pos, |
mdoc_elem_alloc(struct mdoc *m, int line, int pos, |
int tok, struct mdoc_arg *args) |
enum mdoct tok, struct mdoc_arg *args) |
{ |
{ |
struct mdoc_node *p; |
struct mdoc_node *p; |
|
|
Line 599 parsetext(struct mdoc *m, int line, char *buf) |
|
Line 600 parsetext(struct mdoc *m, int line, char *buf) |
|
for (i = 0; ' ' == buf[i]; i++) |
for (i = 0; ' ' == buf[i]; i++) |
/* Skip leading whitespace. */ ; |
/* Skip leading whitespace. */ ; |
|
|
if ('\0' == buf[i]) |
if ('\0' == buf[i]) { |
return(mdoc_perr(m, line, 0, ENOBLANK)); |
if ( ! mdoc_pwarn(m, line, 0, ENOBLANK)) |
|
return(0); |
|
/* |
|
* Assume that a `Pp' should be inserted in the case of |
|
* a blank line. Technically, blank lines aren't |
|
* allowed, but enough manuals assume this behaviour |
|
* that we want to work around it. |
|
*/ |
|
if ( ! mdoc_elem_alloc(m, line, 0, MDOC_Pp, NULL)) |
|
return(0); |
|
} |
|
|
/* |
/* |
* Break apart a free-form line into tokens. Spaces are |
* Break apart a free-form line into tokens. Spaces are |