sftp_error_report(BDRVSSHState *s, const char *fs, ...) { va_list args; va_start(args, fs); error_vprintf(fs, args); if ((s)->sftp) { char *ssh_err; int ssh_err_code; unsigned long sftp_err_code; /* This is not an errno. See <libssh2.h>. */ ssh_err_code = libssh2_session_last_error(s->session, &ssh_err, NULL, 0); /* See <libssh2_sftp.h>. */ sftp_err_code = libssh2_sftp_last_error((s)->sftp); error_printf(": %s (libssh2 error code: %d, sftp error code: %lu)", ssh_err, ssh_err_code, sftp_err_code); } va_end(args); error_printf("\n"); }
/* * Print to current monitor if we have one, else to stderr. * TODO just like error_vprintf() */ void error_printf(const char *fmt, ...) { va_list ap; va_start(ap, fmt); error_vprintf(fmt, ap); va_end(ap); }
void error_printf_unless_qmp(const char *fmt, ...) { va_list ap; if (!monitor_cur_is_qmp()) { va_start(ap, fmt); error_vprintf(fmt, ap); va_end(ap); } }
/* * Print an error message to current monitor if we have one, else to stderr. * 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; error_print_loc(); va_start(ap, fmt); error_vprintf(fmt, ap); va_end(ap); error_printf("\n"); }
/* * Print an error 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 error_vreport(const char *fmt, va_list ap) { GTimeVal tv; gchar *timestr; if (enable_timestamp_msg && !cur_mon) { g_get_current_time(&tv); timestr = g_time_val_to_iso8601(&tv); error_printf("%s ", timestr); g_free(timestr); } error_print_loc(); error_vprintf(fmt, ap); error_printf("\n"); }
/* * 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"); }
void error_vprintf_unless_qmp(const char *fmt, va_list ap) { error_vprintf(fmt, ap); }