/* Print an error message to current monitor if we have one, else to stderr. Format arguments like sprintf(). The result should not contain newlines. Prepend the current location and append a newline. It's wrong to call this in a QMP monitor. Use qerror_report() there.  */
void error_report(const char *fmt,...)
/* Print an error message to current monitor if we have one, else to stderr. Format arguments like sprintf(). The result should not contain newlines. Prepend the current location and append a newline. It's wrong to call this in a QMP monitor. Use qerror_report() there.  */
void error_report(const char *fmt,...)
{
    va_list ap;
    GTimeVal tv;
    gchar *timestr;
    if (enable_timestamp_msg) {
        g_get_current_time(&tv);
        timestr = g_time_val_to_iso8601(&tv);
        error_printf("%s ", timestr);
        g_free(timestr);
    }
    error_print_loc();
    va_start(ap, fmt);
    error_vprintf(fmt, ap);
    va_end(ap);
    error_printf("\n");
}