Simplified handling of #error
This commit is contained in:
parent
c64bbfda5c
commit
811ac4ba8a
25
src/cpp.c
25
src/cpp.c
|
@ -59,7 +59,7 @@ struct _Cpp
|
||||||
char ** paths;
|
char ** paths;
|
||||||
size_t paths_cnt;
|
size_t paths_cnt;
|
||||||
/* substitutions */
|
/* substitutions */
|
||||||
char ** defines; /* FIXME also store the value */
|
char ** defines; /* FIXME also store the value, directly in tokens? */
|
||||||
size_t defines_cnt;
|
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_error(Cpp * cpp, Token * token, char const * str);
|
||||||
static int _directive_include(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_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,
|
static int _cpp_callback_directive(Parser * parser, Token * token, int c,
|
||||||
void * data)
|
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);
|
token_set_code(token, CPP_CODE_META_ENDIF);
|
||||||
break;
|
break;
|
||||||
case CPP_DIRECTIVE_ERROR:
|
case CPP_DIRECTIVE_ERROR:
|
||||||
_directive_error(cpp, token, str);
|
token_set_code(token, CPP_CODE_META_ERROR);
|
||||||
break;
|
break;
|
||||||
case CPP_DIRECTIVE_IF:
|
case CPP_DIRECTIVE_IF:
|
||||||
/* FIXME implement */
|
/* FIXME implement */
|
||||||
|
@ -480,7 +479,7 @@ static int _cpp_callback_directive(Parser * parser, Token * token, int c,
|
||||||
_directive_undef(cpp, token, str);
|
_directive_undef(cpp, token, str);
|
||||||
break;
|
break;
|
||||||
case CPP_DIRECTIVE_WARNING:
|
case CPP_DIRECTIVE_WARNING:
|
||||||
_directive_warning(cpp, token, str);
|
token_set_code(token, CPP_CODE_META_WARNING);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/* FIXME implement */
|
/* 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
|
/* FIXME line and column will probably be wrong for included content
|
||||||
* use a parser to keep track of it? */
|
* use a parser to keep track of it? */
|
||||||
{
|
{
|
||||||
char buf[256];
|
|
||||||
|
|
||||||
token_set_code(token, CPP_CODE_META_ERROR);
|
token_set_code(token, CPP_CODE_META_ERROR);
|
||||||
snprintf(buf, sizeof(buf), "in %s:%u, %u: %s: %s",
|
token_set_string(token, str);
|
||||||
cpp_get_filename(cpp), token_get_line(token),
|
|
||||||
token_get_col(token), "Unknown or invalid directive",
|
|
||||||
str);
|
|
||||||
token_set_string(token, buf);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -611,16 +604,6 @@ static int _directive_undef(Cpp * cpp, Token * token, char const * str)
|
||||||
return 0;
|
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 */
|
/* cpp_callback_comma */
|
||||||
static int _cpp_callback_comma(Parser * parser, Token * token, int c,
|
static int _cpp_callback_comma(Parser * parser, Token * token, int c,
|
||||||
|
|
14
src/main.c
14
src/main.c
|
@ -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),
|
fprintf(stderr, "DEBUG: %s (%d)\n", token_get_string(token),
|
||||||
token_get_code(token));
|
token_get_code(token));
|
||||||
#else
|
#else
|
||||||
if((code = token_get_code(token)) == CPP_CODE_META_ERROR)
|
if((code = token_get_code(token)) == CPP_CODE_META_ERROR
|
||||||
{
|
|| code == CPP_CODE_META_WARNING)
|
||||||
fprintf(stderr, "%s%s\n", "Error: ",
|
fprintf(stderr, "%s%s%s%s%u%s%s\n",
|
||||||
token_get_string(token));
|
code == CPP_CODE_META_ERROR
|
||||||
}
|
? "Error" : "Warning", " in ",
|
||||||
else if(code == CPP_CODE_META_WARNING)
|
token_get_filename(token), ":",
|
||||||
fprintf(stderr, "%s%s\n", "Warning: ",
|
token_get_line(token), ": ",
|
||||||
token_get_string(token));
|
token_get_string(token));
|
||||||
else if(code >= CPP_CODE_META_FIRST
|
else if(code >= CPP_CODE_META_FIRST
|
||||||
&& code <= CPP_CODE_META_LAST)
|
&& code <= CPP_CODE_META_LAST)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user