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:
Joshua Kwan 2004-02-01 08:10:18 +00:00
parent 1c777df980
commit 8721002b54
1 changed files with 25 additions and 2 deletions

View File

@ -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 */