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 \".*\"
|
||||
MALSTRING \"[^\"\n]*\n
|
||||
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} {
|
||||
yytext[yyleng - 1] = '\0'; /* Kill the trailing quote */
|
||||
yylval.s = strdup(yytext + 1); /* kill leading quote */
|
||||
|
|
Loading…
Reference in New Issue