mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-05-11 10:10:48 +00:00
Pre-format diagnostic messages.
This will make it easier to hook diagnostics enabling unit tests.
This commit is contained in:
parent
113e0d82ba
commit
71569b45c9
1 changed files with 57 additions and 59 deletions
|
@ -73,10 +73,27 @@ report_function (expr_t *e)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_warning (expr_t *e, const char *fmt, va_list args)
|
format_message (dstring_t *message, const char *msg_type, expr_t *e,
|
||||||
|
const char *fmt, va_list args)
|
||||||
{
|
{
|
||||||
string_t file = pr.source_file;
|
string_t file = pr.source_file;
|
||||||
int line = pr.source_line;
|
int line = pr.source_line;
|
||||||
|
const char *colon = fmt ? ": " : "";
|
||||||
|
|
||||||
|
if (e) {
|
||||||
|
file = e->file;
|
||||||
|
line = e->line;
|
||||||
|
}
|
||||||
|
dsprintf (message, "%s:%d: %s%s", GETSTR (file), line, msg_type, colon);
|
||||||
|
if (fmt) {
|
||||||
|
davsprintf (message, fmt, args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_warning (expr_t *e, const char *fmt, va_list args)
|
||||||
|
{
|
||||||
|
dstring_t *message = dstring_new ();
|
||||||
|
|
||||||
report_function (e);
|
report_function (e);
|
||||||
if (options.warnings.promote) {
|
if (options.warnings.promote) {
|
||||||
|
@ -85,13 +102,9 @@ _warning (expr_t *e, const char *fmt, va_list args)
|
||||||
pr.error_count++;
|
pr.error_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e) {
|
format_message (message, "warning", e, fmt, args);
|
||||||
file = e->file;
|
fprintf (stderr, "%s\n", message->str);
|
||||||
line = e->line;
|
dstring_delete (message);
|
||||||
}
|
|
||||||
fprintf (stderr, "%s:%d: warning: ", GETSTR (file), line);
|
|
||||||
vfprintf (stderr, fmt, args);
|
|
||||||
fputs ("\n", stderr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -102,19 +115,14 @@ debug (expr_t *e, const char *fmt, ...)
|
||||||
if (options.verbosity < 1)
|
if (options.verbosity < 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
report_function (e);
|
||||||
va_start (args, fmt);
|
va_start (args, fmt);
|
||||||
{
|
{
|
||||||
string_t file = pr.source_file;
|
dstring_t *message = dstring_new ();
|
||||||
int line = pr.source_line;
|
|
||||||
|
|
||||||
report_function (e);
|
format_message (message, "debug", e, fmt, args);
|
||||||
if (e) {
|
fprintf (stderr, "%s\n", message->str);
|
||||||
file = e->file;
|
dstring_delete (message);
|
||||||
line = e->line;
|
|
||||||
}
|
|
||||||
fprintf (stderr, "%s:%d: debug: ", GETSTR (file), line);
|
|
||||||
vfprintf (stderr, fmt, args);
|
|
||||||
fputs ("\n", stderr);
|
|
||||||
}
|
}
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
@ -123,19 +131,17 @@ void
|
||||||
bug (expr_t *e, const char *fmt, ...)
|
bug (expr_t *e, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
string_t file = pr.source_file;
|
|
||||||
int line = pr.source_line;
|
|
||||||
|
|
||||||
va_start (args, fmt);
|
|
||||||
|
|
||||||
report_function (e);
|
report_function (e);
|
||||||
if (e) {
|
|
||||||
file = e->file;
|
va_start (args, fmt);
|
||||||
line = e->line;
|
{
|
||||||
|
dstring_t *message = dstring_new ();
|
||||||
|
|
||||||
|
format_message (message, "BUG", e, fmt, args);
|
||||||
|
fprintf (stderr, "%s\n", message->str);
|
||||||
|
dstring_delete (message);
|
||||||
}
|
}
|
||||||
fprintf (stderr, "%s:%d: BUG: ", GETSTR (file), line);
|
|
||||||
vfprintf (stderr, fmt, args);
|
|
||||||
fputs ("\n", stderr);
|
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,17 +157,13 @@ notice (expr_t *e, const char *fmt, ...)
|
||||||
if (options.notices.promote) {
|
if (options.notices.promote) {
|
||||||
_warning (e, fmt, args);
|
_warning (e, fmt, args);
|
||||||
} else {
|
} else {
|
||||||
string_t file = pr.source_file;
|
dstring_t *message = dstring_new ();
|
||||||
int line = pr.source_line;
|
|
||||||
|
|
||||||
report_function (e);
|
report_function (e);
|
||||||
if (e) {
|
|
||||||
file = e->file;
|
format_message (message, "notice", e, fmt, args);
|
||||||
line = e->line;
|
fprintf (stderr, "%s\n", message->str);
|
||||||
}
|
dstring_delete (message);
|
||||||
fprintf (stderr, "%s:%d: notice: ", GETSTR (file), line);
|
|
||||||
vfprintf (stderr, fmt, args);
|
|
||||||
fputs ("\n", stderr);
|
|
||||||
}
|
}
|
||||||
va_end (args);
|
va_end (args);
|
||||||
return e;
|
return e;
|
||||||
|
@ -178,33 +180,21 @@ warning (expr_t *e, const char *fmt, ...)
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_error (expr_t *e, const char *err, const char *fmt, va_list args)
|
|
||||||
{
|
|
||||||
string_t file = pr.source_file;
|
|
||||||
int line = pr.source_line;
|
|
||||||
|
|
||||||
report_function (e);
|
|
||||||
|
|
||||||
if (e) {
|
|
||||||
file = e->file;
|
|
||||||
line = e->line;
|
|
||||||
}
|
|
||||||
fprintf (stderr, "%s:%d: %s%s", GETSTR (file), line, err,
|
|
||||||
fmt ? ": " : "");
|
|
||||||
if (fmt)
|
|
||||||
vfprintf (stderr, fmt, args);
|
|
||||||
fputs ("\n", stderr);
|
|
||||||
pr.error_count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
internal_error (expr_t *e, const char *fmt, ...)
|
internal_error (expr_t *e, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
|
report_function (e);
|
||||||
|
|
||||||
va_start (args, fmt);
|
va_start (args, fmt);
|
||||||
_error (e, "internal error", fmt, args);
|
{
|
||||||
|
dstring_t *message = dstring_new ();
|
||||||
|
|
||||||
|
format_message (message, "internal error", e, fmt, args);
|
||||||
|
fprintf (stderr, "%s\n", message->str);
|
||||||
|
dstring_delete (message);
|
||||||
|
}
|
||||||
va_end (args);
|
va_end (args);
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
|
@ -214,8 +204,16 @@ error (expr_t *e, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
|
report_function (e);
|
||||||
|
|
||||||
va_start (args, fmt);
|
va_start (args, fmt);
|
||||||
_error (e, "error", fmt, args);
|
{
|
||||||
|
dstring_t *message = dstring_new ();
|
||||||
|
|
||||||
|
format_message (message, "error", e, fmt, args);
|
||||||
|
fprintf (stderr, "%s\n", message->str);
|
||||||
|
dstring_delete (message);
|
||||||
|
}
|
||||||
va_end (args);
|
va_end (args);
|
||||||
|
|
||||||
if (!e)
|
if (!e)
|
||||||
|
|
Loading…
Reference in a new issue