- make #error fail the compilation (i.e. non zero exit status) - add #warning which is non fatal. #warning is not part of ANSI but seems to be widely supported, and cpp's continual grumbling gets on my nerves. Reference: /n/sources/patch/applied/cpp-warning Date: Thu Dec 18 17:05:21 CET 2008 Signed-off-by: steve@quintile.net --- /sys/src/cmd/cpp/nlist.c Thu Dec 18 17:02:45 2008 +++ /sys/src/cmd/cpp/nlist.c Thu Dec 18 17:02:42 2008 @@ -33,6 +33,7 @@ "undef", KUNDEF, ISKW, "line", KLINE, ISKW, "error", KERROR, ISKW, + "warning", KWARNING, ISKW, // extension to ANSI "pragma", KPRAGMA, ISKW, "eval", KEVAL, ISKW, "defined", KDEFINED, ISDEFINED+ISUNCHANGE, --- /sys/src/cmd/cpp/cpp.h Thu Dec 18 17:02:50 2008 +++ /sys/src/cmd/cpp/cpp.h Thu Dec 18 17:02:47 2008 @@ -20,7 +20,7 @@ DSHARP1, NAME1, DEFINED, UMINUS }; enum kwtype { KIF, KIFDEF, KIFNDEF, KELIF, KELSE, KENDIF, KINCLUDE, KDEFINE, - KUNDEF, KLINE, KERROR, KPRAGMA, KDEFINED, + KUNDEF, KLINE, KERROR, KWARNING, KPRAGMA, KDEFINED, KLINENO, KFILE, KDATE, KTIME, KSTDC, KEVAL }; #define ISDEFINED 01 /* has #defined value */ --- /sys/src/cmd/cpp/cpp.c Thu Dec 18 17:02:54 2008 +++ /sys/src/cmd/cpp/cpp.c Thu Dec 18 17:02:52 2008 @@ -208,7 +208,12 @@ case KERROR: trp->tp = tp+1; - error(WARNING, "#error directive: %r", trp); + error(ERROR, "#error directive: %r", trp); + break; + + case KWARNING: + trp->tp = tp+1; + error(WARNING, "#warning directive: %r", trp); break; case KLINE: