Error handling for negative numbers.
git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@204 db0b04b0-f4d1-0310-9a6d-de3e77497b0e
This commit is contained in:
parent
1c777df980
commit
8721002b54
27
config.l
27
config.l
|
@ -14,7 +14,7 @@ unsigned int line = 1, col = 0;
|
||||||
|
|
||||||
%}
|
%}
|
||||||
|
|
||||||
NUMBER [0-9]+
|
NUMBER -?[0-9]+
|
||||||
VALUE \".*\"
|
VALUE \".*\"
|
||||||
MALSTRING \"[^\"\n]*\n
|
MALSTRING \"[^\"\n]*\n
|
||||||
WHITE [\t ]*
|
WHITE [\t ]*
|
||||||
|
@ -22,7 +22,30 @@ COMMENT ^#.*
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
{NUMBER} { yylval.i = atoi(yytext); return TYPE_NUMBER; }
|
{NUMBER} {
|
||||||
|
unsigned int x;
|
||||||
|
errno = 0;
|
||||||
|
|
||||||
|
if (atoi(yytext) < 0)
|
||||||
|
{
|
||||||
|
fprintf(stderr,"%s:%d: negative value not accepted! Fix it now!\n",
|
||||||
|
config, line);
|
||||||
|
graceful_exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
x = strtoul(yytext, NULL, 10);
|
||||||
|
|
||||||
|
if (errno == ERANGE)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s:%d: %s is too big! Fix it now!\n",
|
||||||
|
config, line, yytext);
|
||||||
|
graceful_exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
yylval.i = x;
|
||||||
|
return TYPE_NUMBER;
|
||||||
|
}
|
||||||
|
|
||||||
{VALUE} {
|
{VALUE} {
|
||||||
yytext[yyleng - 1] = '\0'; /* Kill the trailing quote */
|
yytext[yyleng - 1] = '\0'; /* Kill the trailing quote */
|
||||||
yylval.s = strdup(yytext + 1); /* kill leading quote */
|
yylval.s = strdup(yytext + 1); /* kill leading quote */
|
||||||
|
|
Loading…
Reference in New Issue