X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=con.c;h=7adf2a9dfc1612fc08a09fab80c376d148b54a5d;hp=1cd7b326d10956192bb16983f538ac6744c65767;hb=fe344cb5b29516f26105f0fe2aeaf66d4dbb6d34;hpb=6fa30fdaf4d849d4e8c7196dab9f71a0cb7605f2 diff --git a/con.c b/con.c index 1cd7b32..7adf2a9 100644 --- a/con.c +++ b/con.c @@ -22,9 +22,6 @@ */ #include "gmqcc.h" -uint32_t opts_warn [1 + (COUNT_WARNINGS / 32)]; -bool opts_werror = false; - /* * isatty/STDERR_FILENO/STDOUT_FILNO * + some other things likewise. @@ -368,33 +365,45 @@ void con_cprintmsg (void *ctx, int lvl, const char *msgtype, const char *msg, .. size_t compile_errors = 0; size_t compile_warnings = 0; +void vcompile_error(lex_ctx ctx, const char *msg, va_list ap) +{ + ++compile_errors; + con_cvprintmsg((void*)&ctx, LVL_ERROR, "error", msg, ap); +} + 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); + vcompile_error(ctx, msg, ap); va_end(ap); } -bool GMQCC_WARN compile_warning(lex_ctx ctx, int warntype, const char *fmt, ...) +bool GMQCC_WARN vcompile_warning(lex_ctx ctx, int warntype, const char *fmt, va_list ap) { - va_list ap; int lvl = LVL_WARNING; if (!OPTS_WARN(warntype)) return false; - if (opts_werror) { + if (opts.werror) { ++compile_errors; lvl = LVL_ERROR; } else ++compile_warnings; + con_vprintmsg(lvl, ctx.file, ctx.line, (opts.werror ? "error" : "warning"), fmt, ap); + + return opts.werror; +} + +bool GMQCC_WARN compile_warning(lex_ctx ctx, int warntype, const char *fmt, ...) +{ + bool r; + va_list ap; va_start(ap, fmt); - con_vprintmsg(lvl, ctx.file, ctx.line, (opts_werror ? "error" : "warning"), fmt, ap); + r = vcompile_warning(ctx, warntype, fmt, ap); va_end(ap); - - return opts_werror; + return r; }