version 1.32, 2012/11/16 22:21:05 |
version 1.35, 2013/05/30 03:52:59 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2010, 2011, 2012, 2013 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
Line 180 static const char * const mandocerrs[MANDOCERR_MAX] = |
|
Line 180 static const char * const mandocerrs[MANDOCERR_MAX] = |
|
"skipping unknown macro", |
"skipping unknown macro", |
"NOT IMPLEMENTED, please use groff: skipping request", |
"NOT IMPLEMENTED, please use groff: skipping request", |
"argument count wrong", |
"argument count wrong", |
|
"skipping column outside column list", |
"skipping end of block that is not open", |
"skipping end of block that is not open", |
"missing end of block", |
"missing end of block", |
"scope open on exit", |
"scope open on exit", |
Line 327 mparse_buf_r(struct mparse *curp, struct buf blk, int |
|
Line 328 mparse_buf_r(struct mparse *curp, struct buf blk, int |
|
break; |
break; |
} |
} |
|
|
|
/* |
|
* Make sure we have space for at least |
|
* one backslash and one other character |
|
* and the trailing NUL byte. |
|
*/ |
|
|
|
if (pos + 2 >= (int)ln.sz) |
|
resize_buf(&ln, 256); |
|
|
/* |
/* |
* Warn about bogus characters. If you're using |
* Warn about bogus characters. If you're using |
* non-ASCII encoding, you're screwing your |
* non-ASCII encoding, you're screwing your |
Line 343 mparse_buf_r(struct mparse *curp, struct buf blk, int |
|
Line 353 mparse_buf_r(struct mparse *curp, struct buf blk, int |
|
mandoc_msg(MANDOCERR_BADCHAR, curp, |
mandoc_msg(MANDOCERR_BADCHAR, curp, |
curp->line, pos, NULL); |
curp->line, pos, NULL); |
i++; |
i++; |
if (pos >= (int)ln.sz) |
|
resize_buf(&ln, 256); |
|
ln.buf[pos++] = '?'; |
ln.buf[pos++] = '?'; |
continue; |
continue; |
} |
} |
Line 352 mparse_buf_r(struct mparse *curp, struct buf blk, int |
|
Line 360 mparse_buf_r(struct mparse *curp, struct buf blk, int |
|
/* Trailing backslash = a plain char. */ |
/* Trailing backslash = a plain char. */ |
|
|
if ('\\' != blk.buf[i] || i + 1 == (int)blk.sz) { |
if ('\\' != blk.buf[i] || i + 1 == (int)blk.sz) { |
if (pos >= (int)ln.sz) |
|
resize_buf(&ln, 256); |
|
ln.buf[pos++] = blk.buf[i++]; |
ln.buf[pos++] = blk.buf[i++]; |
continue; |
continue; |
} |
} |
Line 395 mparse_buf_r(struct mparse *curp, struct buf blk, int |
|
Line 401 mparse_buf_r(struct mparse *curp, struct buf blk, int |
|
break; |
break; |
} |
} |
|
|
/* Some other escape sequence, copy & cont. */ |
/* Catch escaped bogus characters. */ |
|
|
if (pos + 1 >= (int)ln.sz) |
c = (unsigned char) blk.buf[i+1]; |
resize_buf(&ln, 256); |
|
|
|
|
if ( ! (isascii(c) && |
|
(isgraph(c) || isblank(c)))) { |
|
mandoc_msg(MANDOCERR_BADCHAR, curp, |
|
curp->line, pos, NULL); |
|
i += 2; |
|
ln.buf[pos++] = '?'; |
|
continue; |
|
} |
|
|
|
/* Some other escape sequence, copy & cont. */ |
|
|
ln.buf[pos++] = blk.buf[i++]; |
ln.buf[pos++] = blk.buf[i++]; |
ln.buf[pos++] = blk.buf[i++]; |
ln.buf[pos++] = blk.buf[i++]; |
} |
} |
Line 740 mparse_alloc(enum mparset inttype, enum mandoclevel wl |
|
Line 756 mparse_alloc(enum mparset inttype, enum mandoclevel wl |
|
curp->inttype = inttype; |
curp->inttype = inttype; |
curp->defos = defos; |
curp->defos = defos; |
|
|
curp->roff = roff_alloc(curp); |
curp->roff = roff_alloc(inttype, curp); |
return(curp); |
return(curp); |
} |
} |
|
|