version 1.242, 2014/12/16 03:53:43 |
version 1.243, 2014/12/16 23:44:41 |
Line 730 roff_parseln(struct roff *r, int ln, struct buf *buf, |
|
Line 730 roff_parseln(struct roff *r, int ln, struct buf *buf, |
|
enum rofft t; |
enum rofft t; |
enum rofferr e; |
enum rofferr e; |
int pos; /* parse point */ |
int pos; /* parse point */ |
|
int spos; /* saved parse point for messages */ |
int ppos; /* original offset in buf->buf */ |
int ppos; /* original offset in buf->buf */ |
int ctl; /* macro line (boolean) */ |
int ctl; /* macro line (boolean) */ |
|
|
Line 800 roff_parseln(struct roff *r, int ln, struct buf *buf, |
|
Line 801 roff_parseln(struct roff *r, int ln, struct buf *buf, |
|
return((*roffs[t].sub)(r, t, buf, ln, ppos, pos, offs)); |
return((*roffs[t].sub)(r, t, buf, ln, ppos, pos, offs)); |
} |
} |
|
|
|
/* No scope is open. This is a new request or macro. */ |
|
|
|
spos = pos; |
|
t = roff_parse(r, buf->buf, &pos, ln, ppos); |
|
|
|
/* Tables ignore most macros. */ |
|
|
|
if (r->tbl != NULL && (t == ROFF_MAX || t == ROFF_TS)) { |
|
mandoc_msg(MANDOCERR_TBLMACRO, r->parse, |
|
ln, pos, buf->buf + spos); |
|
return(ROFF_IGN); |
|
} |
|
|
/* |
/* |
* Lastly, as we've no scope open, try to look up and execute |
* This is neither a roff request nor a user-defined macro. |
* the new macro. If no macro is found, simply return and let |
* Let the standard macro set parsers handle it. |
* the compilers handle it. |
|
*/ |
*/ |
|
|
if ((t = roff_parse(r, buf->buf, &pos, ln, ppos)) == ROFF_MAX) |
if (t == ROFF_MAX) |
return(ROFF_CONT); |
return(ROFF_CONT); |
|
|
|
/* Execute a roff request or a user defined macro. */ |
|
|
assert(roffs[t].proc); |
assert(roffs[t].proc); |
return((*roffs[t].proc)(r, t, buf, ln, ppos, pos, offs)); |
return((*roffs[t].proc)(r, t, buf, ln, ppos, pos, offs)); |