From 021ec4962bb7f539effbc325f2771b034fdf62bb Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Sun, 24 Apr 2022 15:16:15 +0900 Subject: [PATCH] [cexpr] Add optional error message prefix string The prefix gives more context to the error messages, making the system a lot easier to use (it was especially helpful when getting my cvar revamp into shape). --- include/QF/cexpr.h | 1 + libs/util/cexpr-lex.l | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/QF/cexpr.h b/include/QF/cexpr.h index c0d608f80..91e19ced2 100644 --- a/include/QF/cexpr.h +++ b/include/QF/cexpr.h @@ -99,6 +99,7 @@ typedef struct exprctx_s { exprval_t *result; exprtab_t *symtab; // directly accessible symbols exprtab_t *external_variables; // accessible via $id + const char *msg_prefix; // optional prefix for error messages struct memsuper_s *memsuper; const struct plitem_s *item; struct plitem_s *messages; diff --git a/libs/util/cexpr-lex.l b/libs/util/cexpr-lex.l index bb4387a10..28551b1dc 100644 --- a/libs/util/cexpr-lex.l +++ b/libs/util/cexpr-lex.l @@ -94,9 +94,18 @@ cexpr_error(exprctx_t *ctx, const char *fmt, ...) va_end (args); if (ctx->messages) { - PL_Message (ctx->messages, ctx->item, "%s", string->str); + if (ctx->msg_prefix) { + PL_Message (ctx->messages, ctx->item, "%s:%s", + ctx->msg_prefix, string->str); + } else { + PL_Message (ctx->messages, ctx->item, "%s", string->str); + } } else { - Sys_Printf ("%s\n", string->str); + if (ctx->msg_prefix) { + Sys_Printf ("%s:%s\n", ctx->msg_prefix, string->str); + } else { + Sys_Printf ("%s\n", string->str); + } } dstring_delete (string); }