version 1.117, 2010/03/31 07:13:53 |
version 1.120, 2010/04/05 08:59:46 |
|
|
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
#include <string.h> |
#include <string.h> |
|
#include <time.h> |
|
|
#include "libmdoc.h" |
#include "libmdoc.h" |
#include "libmandoc.h" |
#include "libmandoc.h" |
Line 351 mdoc_macro(struct mdoc *m, enum mdoct tok, |
|
Line 352 mdoc_macro(struct mdoc *m, enum mdoct tok, |
|
* we're in the body, deny prologue calls. |
* we're in the body, deny prologue calls. |
*/ |
*/ |
if (MDOC_PROLOGUE & mdoc_macros[tok].flags && |
if (MDOC_PROLOGUE & mdoc_macros[tok].flags && |
MDOC_PBODY & m->flags) |
MDOC_PBODY & m->flags) { |
return(mdoc_perr(m, ln, pp, EPROLBODY)); |
if ( ! mdoc_pwarn(m, ln, pp, EBODYPROL)) |
|
return(0); |
|
/* |
|
* FIXME: do this in mdoc_action.c. |
|
*/ |
|
if (NULL == m->meta.title) |
|
m->meta.title = mandoc_strdup("unknown"); |
|
if (NULL == m->meta.vol) |
|
m->meta.vol = mandoc_strdup("local"); |
|
if (NULL == m->meta.os) |
|
m->meta.os = mandoc_strdup("local"); |
|
if (0 == m->meta.date) |
|
m->meta.date = time(NULL); |
|
m->flags |= MDOC_PBODY; |
|
} |
if ( ! (MDOC_PROLOGUE & mdoc_macros[tok].flags) && |
if ( ! (MDOC_PROLOGUE & mdoc_macros[tok].flags) && |
! (MDOC_PBODY & m->flags)) |
! (MDOC_PBODY & m->flags)) |
return(mdoc_perr(m, ln, pp, EBODYPROL)); |
return(mdoc_perr(m, ln, pp, EBODYPROL)); |
Line 436 node_alloc(struct mdoc *m, int line, int pos, |
|
Line 451 node_alloc(struct mdoc *m, int line, int pos, |
|
p->line = line; |
p->line = line; |
p->pos = pos; |
p->pos = pos; |
p->tok = tok; |
p->tok = tok; |
|
p->type = type; |
|
|
return(p); |
return(p); |
} |
} |
Line 599 parsetext(struct mdoc *m, int line, char *buf) |
|
Line 615 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 |