version 1.3, 2011/04/21 22:59:54 |
version 1.4, 2011/04/24 16:22:02 |
|
|
#include <string.h> |
#include <string.h> |
|
|
#include "mandoc.h" |
#include "mandoc.h" |
|
#include "libmandoc.h" |
#include "libroff.h" |
#include "libroff.h" |
|
|
enum tbl_ident { |
enum tbl_ident { |
|
|
/* Arguments always begin with a parenthesis. */ |
/* Arguments always begin with a parenthesis. */ |
|
|
if ('(' != p[*pos]) { |
if ('(' != p[*pos]) { |
TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos); |
mandoc_msg(MANDOCERR_TBL, tbl->parse, |
|
ln, *pos, NULL); |
return(0); |
return(0); |
} |
} |
|
|
|
|
switch (key) { |
switch (key) { |
case (KEY_DELIM): |
case (KEY_DELIM): |
if ('\0' == p[(*pos)++]) { |
if ('\0' == p[(*pos)++]) { |
TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos - 1); |
mandoc_msg(MANDOCERR_TBL, tbl->parse, |
|
ln, *pos - 1, NULL); |
return(0); |
return(0); |
} |
} |
|
|
if ('\0' == p[(*pos)++]) { |
if ('\0' == p[(*pos)++]) { |
TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos - 1); |
mandoc_msg(MANDOCERR_TBL, tbl->parse, |
|
ln, *pos - 1, NULL); |
return(0); |
return(0); |
} |
} |
break; |
break; |
|
|
if ('\0' != (tbl->opts.tab = p[(*pos)++])) |
if ('\0' != (tbl->opts.tab = p[(*pos)++])) |
break; |
break; |
|
|
TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos - 1); |
mandoc_msg(MANDOCERR_TBL, tbl->parse, |
|
ln, *pos - 1, NULL); |
return(0); |
return(0); |
case (KEY_LINESIZE): |
case (KEY_LINESIZE): |
for (i = 0; i < KEY_MAXNUMSZ && p[*pos]; i++, (*pos)++) { |
for (i = 0; i < KEY_MAXNUMSZ && p[*pos]; i++, (*pos)++) { |
|
|
break; |
break; |
} |
} |
|
|
(*tbl->msg)(MANDOCERR_TBL, tbl->data, ln, *pos, NULL); |
mandoc_msg(MANDOCERR_TBL, tbl->parse, ln, *pos, NULL); |
return(0); |
return(0); |
case (KEY_DPOINT): |
case (KEY_DPOINT): |
if ('\0' != (tbl->opts.decimal = p[(*pos)++])) |
if ('\0' != (tbl->opts.decimal = p[(*pos)++])) |
break; |
break; |
|
|
TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos - 1); |
mandoc_msg(MANDOCERR_TBL, tbl->parse, |
|
ln, *pos - 1, NULL); |
return(0); |
return(0); |
default: |
default: |
abort(); |
abort(); |
|
|
if (')' == p[(*pos)++]) |
if (')' == p[(*pos)++]) |
return(1); |
return(1); |
|
|
TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos - 1); |
mandoc_msg(MANDOCERR_TBL, tbl->parse, ln, *pos - 1, NULL); |
return(0); |
return(0); |
} |
} |
|
|
|
|
/* Exit if buffer is empty (or overrun). */ |
/* Exit if buffer is empty (or overrun). */ |
|
|
if (KEY_MAXNAME == i || 0 == i) { |
if (KEY_MAXNAME == i || 0 == i) { |
TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos); |
mandoc_msg(MANDOCERR_TBL, tbl->parse, ln, *pos, NULL); |
return; |
return; |
} |
} |
|
|
|
|
*/ |
*/ |
|
|
if (KEY_MAXKEYS == i) |
if (KEY_MAXKEYS == i) |
TBL_MSG(tbl, MANDOCERR_TBLOPT, ln, sv); |
mandoc_msg(MANDOCERR_TBLOPT, tbl->parse, ln, sv, NULL); |
|
|
goto again; |
goto again; |
/* NOTREACHED */ |
/* NOTREACHED */ |