cpp.ansi: Add missing "#warning" directive

This commit is contained in:
Godzil 2013-03-20 23:45:43 +01:00 committed by Manoël Trapier
parent 5c73826e4c
commit b31c94cf32
3 changed files with 17 additions and 0 deletions

View File

@ -47,6 +47,7 @@ void do_if();
void do_ifdef(int how); void do_ifdef(int how);
void do_undef(char *argstr); void do_undef(char *argstr);
void do_error(); void do_error();
void do_warning();
void do_line(unsigned int l); void do_line(unsigned int l);
void macro_def(struct idf *id, char *text, int nformals, int length, int flags); void macro_def(struct idf *id, char *text, int nformals, int length, int flags);
@ -145,6 +146,9 @@ void domacro()
else else
do_line((unsigned int)tk.tk_val); do_line((unsigned int)tk.tk_val);
break; break;
case K_WARNING: /* "warning" */
do_warning();
break;
case K_ERROR: /* "error" */ case K_ERROR: /* "error" */
do_error(); do_error();
break; break;
@ -507,6 +511,17 @@ void do_undef(char *argstr)
error("illegal #undef construction"); error("illegal #undef construction");
} }
void do_warning()
{
int len;
char *get_text();
char *bp = get_text((char **) 0, &len);
warning("user warning: %s", bp);
free(bp);
LineNumber++;
}
void do_error() void do_error()
{ {
int len; int len;

View File

@ -26,6 +26,7 @@ struct mkey {
{"else", K_ELSE}, {"else", K_ELSE},
{"endif", K_ENDIF}, {"endif", K_ENDIF},
{"error", K_ERROR}, {"error", K_ERROR},
{"warning", K_WARNING},
{"if", K_IF}, {"if", K_IF},
{"ifdef", K_IFDEF}, {"ifdef", K_IFDEF},
{"ifndef", K_IFNDEF}, {"ifndef", K_IFNDEF},

View File

@ -44,4 +44,5 @@ struct macro {
#define K_LINE 10 #define K_LINE 10
#define K_PRAGMA 11 #define K_PRAGMA 11
#define K_UNDEF 12 #define K_UNDEF 12
#define K_WARNING 13
#define K_FILE 100 /* for dependency generator */ #define K_FILE 100 /* for dependency generator */