cpp.ansi: Add missing "#warning" directive
authorGodzil <godzil@godzil.net>
Wed, 20 Mar 2013 22:45:43 +0000 (23:45 +0100)
committerManoël Trapier <godzil@MacBook-Pro.home>
Wed, 24 Jun 2015 22:41:48 +0000 (23:41 +0100)
lang/cem/cpp.ansi/domacro.c
lang/cem/cpp.ansi/init.c
lang/cem/cpp.ansi/macro.str

index 91b565f..d1bedcf 100644 (file)
@@ -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;
index 5753238..243dc46 100644 (file)
@@ -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},
index 2491053..1a3e15e 100644 (file)
@@ -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 */