version 1.151, 2010/06/27 16:36:22 |
version 1.153, 2010/07/01 22:35:54 |
Line 239 mdoc_parseln(struct mdoc *m, int ln, char *buf, int of |
|
Line 239 mdoc_parseln(struct mdoc *m, int ln, char *buf, int of |
|
return(0); |
return(0); |
|
|
m->flags |= MDOC_NEWLINE; |
m->flags |= MDOC_NEWLINE; |
|
|
|
/* |
|
* Let the roff nS register switch SYNOPSIS mode early, |
|
* such that the parser knows at all times |
|
* whether this mode is on or off. |
|
* Note that this mode is also switched by the Sh macro. |
|
*/ |
|
if (m->regs->regs[(int)REG_nS].set) { |
|
if (m->regs->regs[(int)REG_nS].v.u) |
|
m->flags |= MDOC_SYNOPSIS; |
|
else |
|
m->flags &= ~MDOC_SYNOPSIS; |
|
} |
|
|
return(('.' == buf[offs] || '\'' == buf[offs]) ? |
return(('.' == buf[offs] || '\'' == buf[offs]) ? |
mdoc_pmacro(m, ln, buf, offs) : |
mdoc_pmacro(m, ln, buf, offs) : |
mdoc_ptext(m, ln, buf, offs)); |
mdoc_ptext(m, ln, buf, offs)); |
Line 332 node_append(struct mdoc *mdoc, struct mdoc_node *p) |
|
Line 346 node_append(struct mdoc *mdoc, struct mdoc_node *p) |
|
p->parent->tail = p; |
p->parent->tail = p; |
break; |
break; |
case (MDOC_BODY): |
case (MDOC_BODY): |
|
if (p->end) |
|
break; |
assert(MDOC_BLOCK == p->parent->type); |
assert(MDOC_BLOCK == p->parent->type); |
p->parent->body = p; |
p->parent->body = p; |
break; |
break; |
Line 371 node_alloc(struct mdoc *m, int line, int pos, |
|
Line 387 node_alloc(struct mdoc *m, int line, int pos, |
|
|
|
/* Flag analysis. */ |
/* Flag analysis. */ |
|
|
|
if (MDOC_SYNOPSIS & m->flags) |
|
p->flags |= MDOC_SYNPRETTY; |
|
else |
|
p->flags &= ~MDOC_SYNPRETTY; |
if (MDOC_NEWLINE & m->flags) |
if (MDOC_NEWLINE & m->flags) |
p->flags |= MDOC_LINE; |
p->flags |= MDOC_LINE; |
m->flags &= ~MDOC_NEWLINE; |
m->flags &= ~MDOC_NEWLINE; |
|
|
/* Section analysis. */ |
|
|
|
if (SEC_SYNOPSIS == p->sec) |
|
p->flags |= MDOC_SYNPRETTY; |
|
|
|
/* Register analysis. */ |
|
|
|
if (m->regs->regs[(int)REG_nS].set) { |
|
if (m->regs->regs[(int)REG_nS].v.u) |
|
p->flags |= MDOC_SYNPRETTY; |
|
else |
|
p->flags &= ~MDOC_SYNPRETTY; |
|
} |
|
|
|
return(p); |
return(p); |
} |
} |
|
|
Line 431 mdoc_body_alloc(struct mdoc *m, int line, int pos, enu |
|
Line 437 mdoc_body_alloc(struct mdoc *m, int line, int pos, enu |
|
if ( ! node_append(m, p)) |
if ( ! node_append(m, p)) |
return(0); |
return(0); |
m->next = MDOC_NEXT_CHILD; |
m->next = MDOC_NEXT_CHILD; |
|
return(1); |
|
} |
|
|
|
|
|
int |
|
mdoc_endbody_alloc(struct mdoc *m, int line, int pos, enum mdoct tok, |
|
struct mdoc_node *body, enum mdoc_endbody end) |
|
{ |
|
struct mdoc_node *p; |
|
|
|
p = node_alloc(m, line, pos, tok, MDOC_BODY); |
|
p->pending = body; |
|
p->end = end; |
|
if ( ! node_append(m, p)) |
|
return(0); |
|
m->next = MDOC_NEXT_SIBLING; |
return(1); |
return(1); |
} |
} |
|
|