*/
#include "gmqcc.h"
+uint32_t opts_warn [1 + (COUNT_WARNINGS / 32)];
+bool opts_werror = false;
+
/*
* isatty/STDERR_FILENO/STDOUT_FILNO
* + some other things likewise.
con_cvprintmsg(ctx, lvl, msgtype, msg, va);
va_end (va);
}
+
+/* General error interface */
+size_t compile_errors = 0;
+size_t compile_warnings = 0;
+
+void compile_error(lex_ctx ctx, const char *msg, ...)
+{
+ va_list ap;
+ ++compile_errors;
+ va_start(ap, msg);
+ con_cvprintmsg((void*)&ctx, LVL_ERROR, "error", msg, ap);
+ va_end(ap);
+}
+
+bool GMQCC_WARN compile_warning(lex_ctx ctx, int warntype, const char *fmt, ...)
+{
+ va_list ap;
+ int lvl = LVL_WARNING;
+
+ if (!OPTS_WARN(warntype))
+ return false;
+
+ if (opts_werror) {
+ ++compile_errors;
+ lvl = LVL_ERROR;
+ }
+ else
+ ++compile_warnings;
+
+ va_start(ap, fmt);
+ con_vprintmsg(lvl, ctx.file, ctx.line, (opts_werror ? "error" : "warning"), fmt, ap);
+ va_end(ap);
+
+ return opts_werror;
+}