Index: code/tools/lcc/cpp/cpp.c =================================================================== --- code/tools/lcc/cpp/cpp.c (revision 1382) +++ code/tools/lcc/cpp/cpp.c (working copy) @@ -204,9 +204,14 @@ error(WARNING, "Syntax error in #endif"); break; + case KWARNING: + trp->tp = tp+1; + error(WARNING, "#warning directive: %r", trp); + break; + case KERROR: trp->tp = tp+1; - error(WARNING, "#error directive: %r", trp); + error(ERROR, "#error directive: %r", trp); break; case KLINE: Index: code/tools/lcc/cpp/cpp.h =================================================================== --- code/tools/lcc/cpp/cpp.h (revision 1382) +++ code/tools/lcc/cpp/cpp.h (working copy) @@ -24,7 +24,7 @@ DSHARP1, NAME1, DEFINED, UMINUS }; enum kwtype { KIF, KIFDEF, KIFNDEF, KELIF, KELSE, KENDIF, KINCLUDE, KDEFINE, - KUNDEF, KLINE, KERROR, KPRAGMA, KDEFINED, + KUNDEF, KLINE, KWARNING, KERROR, KPRAGMA, KDEFINED, KLINENO, KFILE, KDATE, KTIME, KSTDC, KEVAL }; #define ISDEFINED 01 /* has #defined value */ Index: code/tools/lcc/cpp/nlist.c =================================================================== --- code/tools/lcc/cpp/nlist.c (revision 1382) +++ code/tools/lcc/cpp/nlist.c (working copy) @@ -29,6 +29,7 @@ {"define", KDEFINE, ISKW}, {"undef", KUNDEF, ISKW}, {"line", KLINE, ISKW}, + {"warning", KWARNING, ISKW}, {"error", KERROR, ISKW}, {"pragma", KPRAGMA, ISKW}, {"eval", KEVAL, ISKW},