Simplified handling of #error

This commit is contained in:
Pierre Pronchery 2008-03-02 12:56:16 +00:00
parent c64bbfda5c
commit 811ac4ba8a
2 changed files with 11 additions and 28 deletions

View File

@ -59,7 +59,7 @@ struct _Cpp
char ** paths;
size_t paths_cnt;
/* substitutions */
char ** defines; /* FIXME also store the value */
char ** defines; /* FIXME also store the value, directly in tokens? */
size_t defines_cnt;
};
@ -405,7 +405,6 @@ static int _cpp_callback_comment(Parser * parser, Token * token, int c,
static int _directive_error(Cpp * cpp, Token * token, char const * str);
static int _directive_include(Cpp * cpp, Token * token, char const * str);
static int _directive_undef(Cpp * cpp, Token * token, char const * str);
static int _directive_warning(Cpp * cpp, Token * token, char const * str);
static int _cpp_callback_directive(Parser * parser, Token * token, int c,
void * data)
@ -455,7 +454,7 @@ static int _cpp_callback_directive(Parser * parser, Token * token, int c,
token_set_code(token, CPP_CODE_META_ENDIF);
break;
case CPP_DIRECTIVE_ERROR:
_directive_error(cpp, token, str);
token_set_code(token, CPP_CODE_META_ERROR);
break;
case CPP_DIRECTIVE_IF:
/* FIXME implement */
@ -480,7 +479,7 @@ static int _cpp_callback_directive(Parser * parser, Token * token, int c,
_directive_undef(cpp, token, str);
break;
case CPP_DIRECTIVE_WARNING:
_directive_warning(cpp, token, str);
token_set_code(token, CPP_CODE_META_WARNING);
break;
default:
/* FIXME implement */
@ -495,14 +494,8 @@ static int _directive_error(Cpp * cpp, Token * token, char const * str)
/* FIXME line and column will probably be wrong for included content
* use a parser to keep track of it? */
{
char buf[256];
token_set_code(token, CPP_CODE_META_ERROR);
snprintf(buf, sizeof(buf), "in %s:%u, %u: %s: %s",
cpp_get_filename(cpp), token_get_line(token),
token_get_col(token), "Unknown or invalid directive",
str);
token_set_string(token, buf);
token_set_string(token, str);
return 0;
}
@ -611,16 +604,6 @@ static int _directive_undef(Cpp * cpp, Token * token, char const * str)
return 0;
}
static int _directive_warning(Cpp * cpp, Token * token, char const * str)
{
int ret;
/* FIXME implement */
ret = _directive_error(cpp, token, str);
token_set_code(token, CPP_CODE_META_WARNING);
return ret;
}
/* cpp_callback_comma */
static int _cpp_callback_comma(Parser * parser, Token * token, int c,

View File

@ -108,13 +108,13 @@ static int _cpp_do(Prefs * prefs, FILE * fp, char const * filename)
fprintf(stderr, "DEBUG: %s (%d)\n", token_get_string(token),
token_get_code(token));
#else
if((code = token_get_code(token)) == CPP_CODE_META_ERROR)
{
fprintf(stderr, "%s%s\n", "Error: ",
token_get_string(token));
}
else if(code == CPP_CODE_META_WARNING)
fprintf(stderr, "%s%s\n", "Warning: ",
if((code = token_get_code(token)) == CPP_CODE_META_ERROR
|| code == CPP_CODE_META_WARNING)
fprintf(stderr, "%s%s%s%s%u%s%s\n",
code == CPP_CODE_META_ERROR
? "Error" : "Warning", " in ",
token_get_filename(token), ":",
token_get_line(token), ": ",
token_get_string(token));
else if(code >= CPP_CODE_META_FIRST
&& code <= CPP_CODE_META_LAST)