version 1.44, 2014/03/19 21:51:20 |
version 1.45, 2014/03/19 22:20:43 |
|
|
struct man *man; /* man parser */ |
struct man *man; /* man parser */ |
struct mdoc *mdoc; /* mdoc parser */ |
struct mdoc *mdoc; /* mdoc parser */ |
struct roff *roff; /* roff parser (!NULL) */ |
struct roff *roff; /* roff parser (!NULL) */ |
|
char *sodest; /* filename pointed to by .so */ |
int reparse_count; /* finite interp. stack */ |
int reparse_count; /* finite interp. stack */ |
mandocmsg mmsg; /* warning/error message handler */ |
mandocmsg mmsg; /* warning/error message handler */ |
const char *file; |
const char *file; |
|
|
assert(MANDOCLEVEL_FATAL <= curp->file_status); |
assert(MANDOCLEVEL_FATAL <= curp->file_status); |
break; |
break; |
case (ROFF_SO): |
case (ROFF_SO): |
|
if (0 == (MPARSE_SO & curp->options) && |
|
(i >= (int)blk.sz || '\0' == blk.buf[i])) { |
|
curp->sodest = mandoc_strdup(ln.buf + of); |
|
free(ln.buf); |
|
return; |
|
} |
/* |
/* |
* We remove `so' clauses from our lookaside |
* We remove `so' clauses from our lookaside |
* buffer because we're going to descend into |
* buffer because we're going to descend into |
Line 676 mparse_end(struct mparse *curp) |
|
Line 683 mparse_end(struct mparse *curp) |
|
return; |
return; |
} |
} |
|
|
if ( ! (curp->man || curp->mdoc)) { |
if ( ! (curp->mdoc || curp->man || curp->sodest)) { |
mandoc_msg(MANDOCERR_NOTMANUAL, curp, 1, 0, NULL); |
mandoc_msg(MANDOCERR_NOTMANUAL, curp, 1, 0, NULL); |
curp->file_status = MANDOCLEVEL_FATAL; |
curp->file_status = MANDOCLEVEL_FATAL; |
return; |
return; |
Line 798 mparse_reset(struct mparse *curp) |
|
Line 805 mparse_reset(struct mparse *curp) |
|
curp->file_status = MANDOCLEVEL_OK; |
curp->file_status = MANDOCLEVEL_OK; |
curp->mdoc = NULL; |
curp->mdoc = NULL; |
curp->man = NULL; |
curp->man = NULL; |
|
|
|
free(curp->sodest); |
|
curp->sodest = NULL; |
} |
} |
|
|
void |
void |
Line 814 mparse_free(struct mparse *curp) |
|
Line 824 mparse_free(struct mparse *curp) |
|
free(curp->secondary->buf); |
free(curp->secondary->buf); |
|
|
free(curp->secondary); |
free(curp->secondary); |
|
free(curp->sodest); |
free(curp); |
free(curp); |
} |
} |
|
|
void |
void |
mparse_result(struct mparse *curp, struct mdoc **mdoc, struct man **man) |
mparse_result(struct mparse *curp, |
|
struct mdoc **mdoc, struct man **man, char **sodest) |
{ |
{ |
|
|
|
if (sodest && NULL != (*sodest = curp->sodest)) { |
|
*mdoc = NULL; |
|
*man = NULL; |
|
return; |
|
} |
if (mdoc) |
if (mdoc) |
*mdoc = curp->mdoc; |
*mdoc = curp->mdoc; |
if (man) |
if (man) |