mirror of https://github.com/xqemu/xqemu.git
error: Functions to report warnings and informational messages
Add warn_report(), warn_vreport() for reporting warnings, and info_report(), info_vreport() for informational messages. These are implemented them with a helper function factored out of error_vreport(), suitably generalized. This patch makes no changes to the output of the original error_report() function. Signed-off-by: Alistair Francis <alistair.francis@xilinx.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Message-Id: <c89e9980019f296ec9aa38d7689ac4d5c369296d.1499866456.git.alistair.francis@xilinx.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
beeb175c0d
commit
97f40301f1
|
@ -35,8 +35,15 @@ void error_printf(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
|
||||||
void error_vprintf_unless_qmp(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
|
void error_vprintf_unless_qmp(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
|
||||||
void error_printf_unless_qmp(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
|
void error_printf_unless_qmp(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
|
||||||
void error_set_progname(const char *argv0);
|
void error_set_progname(const char *argv0);
|
||||||
|
|
||||||
void error_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
|
void error_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
|
||||||
|
void warn_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
|
||||||
|
void info_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
|
||||||
|
|
||||||
void error_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
|
void error_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
|
||||||
|
void warn_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
|
||||||
|
void info_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
|
||||||
|
|
||||||
const char *error_get_progname(void);
|
const char *error_get_progname(void);
|
||||||
extern bool enable_timestamp_msg;
|
extern bool enable_timestamp_msg;
|
||||||
|
|
||||||
|
|
|
@ -2535,7 +2535,11 @@ sub process {
|
||||||
error_prepend|
|
error_prepend|
|
||||||
error_reportf_err|
|
error_reportf_err|
|
||||||
error_vreport|
|
error_vreport|
|
||||||
error_report}x;
|
warn_vreport|
|
||||||
|
info_vreport|
|
||||||
|
error_report|
|
||||||
|
warn_report|
|
||||||
|
info_report}x;
|
||||||
|
|
||||||
if ($rawline =~ /\b(?:$qemu_error_funcs)\s*\(.*\".*\\n/) {
|
if ($rawline =~ /\b(?:$qemu_error_funcs)\s*\(.*\".*\\n/) {
|
||||||
ERROR("Error messages should not contain newlines\n" . $herecurr);
|
ERROR("Error messages should not contain newlines\n" . $herecurr);
|
||||||
|
|
|
@ -14,6 +14,16 @@
|
||||||
#include "monitor/monitor.h"
|
#include "monitor/monitor.h"
|
||||||
#include "qemu/error-report.h"
|
#include "qemu/error-report.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @report_type is the type of message: error, warning or
|
||||||
|
* informational.
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
REPORT_TYPE_ERROR,
|
||||||
|
REPORT_TYPE_WARNING,
|
||||||
|
REPORT_TYPE_INFO,
|
||||||
|
} report_type;
|
||||||
|
|
||||||
void error_printf(const char *fmt, ...)
|
void error_printf(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
@ -179,17 +189,29 @@ static void print_loc(void)
|
||||||
|
|
||||||
bool enable_timestamp_msg;
|
bool enable_timestamp_msg;
|
||||||
/*
|
/*
|
||||||
* Print an error message to current monitor if we have one, else to stderr.
|
* Print a message to current monitor if we have one, else to stderr.
|
||||||
|
* @report_type is the type of message: error, warning or informational.
|
||||||
* Format arguments like vsprintf(). The resulting message should be
|
* Format arguments like vsprintf(). The resulting message should be
|
||||||
* a single phrase, with no newline or trailing punctuation.
|
* a single phrase, with no newline or trailing punctuation.
|
||||||
* Prepend the current location and append a newline.
|
* Prepend the current location and append a newline.
|
||||||
* It's wrong to call this in a QMP monitor. Use error_setg() there.
|
* It's wrong to call this in a QMP monitor. Use error_setg() there.
|
||||||
*/
|
*/
|
||||||
void error_vreport(const char *fmt, va_list ap)
|
static void vreport(report_type type, const char *fmt, va_list ap)
|
||||||
{
|
{
|
||||||
GTimeVal tv;
|
GTimeVal tv;
|
||||||
gchar *timestr;
|
gchar *timestr;
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case REPORT_TYPE_ERROR:
|
||||||
|
break;
|
||||||
|
case REPORT_TYPE_WARNING:
|
||||||
|
error_printf("warning: ");
|
||||||
|
break;
|
||||||
|
case REPORT_TYPE_INFO:
|
||||||
|
error_printf("info: ");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (enable_timestamp_msg && !cur_mon) {
|
if (enable_timestamp_msg && !cur_mon) {
|
||||||
g_get_current_time(&tv);
|
g_get_current_time(&tv);
|
||||||
timestr = g_time_val_to_iso8601(&tv);
|
timestr = g_time_val_to_iso8601(&tv);
|
||||||
|
@ -204,8 +226,45 @@ void error_vreport(const char *fmt, va_list ap)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print an error message to current monitor if we have one, else to stderr.
|
* Print an error message to current monitor if we have one, else to stderr.
|
||||||
* Format arguments like sprintf(). The resulting message should be a
|
* Format arguments like vsprintf(). The resulting message should be
|
||||||
* single phrase, with no newline or trailing punctuation.
|
* a single phrase, with no newline or trailing punctuation.
|
||||||
|
* Prepend the current location and append a newline.
|
||||||
|
* It's wrong to call this in a QMP monitor. Use error_setg() there.
|
||||||
|
*/
|
||||||
|
void error_vreport(const char *fmt, va_list ap)
|
||||||
|
{
|
||||||
|
vreport(REPORT_TYPE_ERROR, fmt, ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Print a warning message to current monitor if we have one, else to stderr.
|
||||||
|
* Format arguments like vsprintf(). The resulting message should be
|
||||||
|
* a single phrase, with no newline or trailing punctuation.
|
||||||
|
* Prepend the current location and append a newline.
|
||||||
|
* It's wrong to call this in a QMP monitor. Use error_setg() there.
|
||||||
|
*/
|
||||||
|
void warn_vreport(const char *fmt, va_list ap)
|
||||||
|
{
|
||||||
|
vreport(REPORT_TYPE_WARNING, fmt, ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Print an information message to current monitor if we have one, else to
|
||||||
|
* stderr.
|
||||||
|
* Format arguments like vsprintf(). The resulting message should be
|
||||||
|
* a single phrase, with no newline or trailing punctuation.
|
||||||
|
* Prepend the current location and append a newline.
|
||||||
|
* It's wrong to call this in a QMP monitor. Use error_setg() there.
|
||||||
|
*/
|
||||||
|
void info_vreport(const char *fmt, va_list ap)
|
||||||
|
{
|
||||||
|
vreport(REPORT_TYPE_INFO, fmt, ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Print an error message to current monitor if we have one, else to stderr.
|
||||||
|
* Format arguments like sprintf(). The resulting message should be
|
||||||
|
* a single phrase, with no newline or trailing punctuation.
|
||||||
* Prepend the current location and append a newline.
|
* Prepend the current location and append a newline.
|
||||||
* It's wrong to call this in a QMP monitor. Use error_setg() there.
|
* It's wrong to call this in a QMP monitor. Use error_setg() there.
|
||||||
*/
|
*/
|
||||||
|
@ -214,6 +273,39 @@ void error_report(const char *fmt, ...)
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
error_vreport(fmt, ap);
|
vreport(REPORT_TYPE_ERROR, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Print a warning message to current monitor if we have one, else to stderr.
|
||||||
|
* Format arguments like sprintf(). The resulting message should be a
|
||||||
|
* single phrase, with no newline or trailing punctuation.
|
||||||
|
* Prepend the current location and append a newline.
|
||||||
|
* It's wrong to call this in a QMP monitor. Use error_setg() there.
|
||||||
|
*/
|
||||||
|
void warn_report(const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start(ap, fmt);
|
||||||
|
vreport(REPORT_TYPE_WARNING, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Print an information message to current monitor if we have one, else to
|
||||||
|
* stderr.
|
||||||
|
* Format arguments like sprintf(). The resulting message should be a
|
||||||
|
* single phrase, with no newline or trailing punctuation.
|
||||||
|
* Prepend the current location and append a newline.
|
||||||
|
* It's wrong to call this in a QMP monitor. Use error_setg() there.
|
||||||
|
*/
|
||||||
|
void info_report(const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start(ap, fmt);
|
||||||
|
vreport(REPORT_TYPE_INFO, fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue