Browse Source

cpp.ansi: Add missing "#warning" directive

Godzil 11 years ago
parent
commit
b31c94cf32
3 changed files with 17 additions and 0 deletions
  1. 15 0
      lang/cem/cpp.ansi/domacro.c
  2. 1 0
      lang/cem/cpp.ansi/init.c
  3. 1 0
      lang/cem/cpp.ansi/macro.str

+ 15 - 0
lang/cem/cpp.ansi/domacro.c

@@ -47,6 +47,7 @@ void do_if();
 void do_ifdef(int how);
 void do_undef(char *argstr);
 void do_error();
+void do_warning();
 void do_line(unsigned int l);
 
 void macro_def(struct idf *id, char *text, int nformals, int length, int flags);
@@ -145,6 +146,9 @@ void domacro()
 			else
 				do_line((unsigned int)tk.tk_val);
 			break;
+		case K_WARNING:				/* "warning" */
+			do_warning();
+			break;
 		case K_ERROR:				/* "error"	*/
 			do_error();
 			break;
@@ -507,6 +511,17 @@ void do_undef(char *argstr)
 		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()
 {
 	int len;

+ 1 - 0
lang/cem/cpp.ansi/init.c

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

+ 1 - 0
lang/cem/cpp.ansi/macro.str

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