X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=include%2Fqemu%2Ferror-report.h;h=00d069b20fda99bf10992f28be3968bb3d69f3b0;hb=a8d2532645cf5ce4f75981f81dfe363efc35d05c;hp=72fab2b0314240bd18c4ddc242e15f248ed6d386;hpb=8ca19bd882997b69cd9c37adabbfe8360a0a83ee;p=mirror_qemu.git diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h index 72fab2b031..00d069b20f 100644 --- a/include/qemu/error-report.h +++ b/include/qemu/error-report.h @@ -30,11 +30,10 @@ void loc_set_none(void); void loc_set_cmdline(char **argv, int idx, int cnt); void loc_set_file(const char *fname, int lno); -void error_vprintf(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); -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_printf_unless_qmp(const char *fmt, ...) GCC_FMT_ATTR(1, 2); -void error_set_progname(const char *argv0); +int error_vprintf(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); +int error_printf(const char *fmt, ...) GCC_FMT_ATTR(1, 2); +int error_vprintf_unless_qmp(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); +int error_printf_unless_qmp(const char *fmt, ...) GCC_FMT_ATTR(1, 2); 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); @@ -44,36 +43,33 @@ 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); +bool error_report_once_cond(bool *printed, const char *fmt, ...) + GCC_FMT_ATTR(2, 3); +bool warn_report_once_cond(bool *printed, const char *fmt, ...) + GCC_FMT_ATTR(2, 3); + +void error_init(const char *argv0); + /* * Similar to error_report(), except it prints the message just once. * Return true when it prints, false otherwise. */ -#define error_report_once(fmt, ...) \ - ({ \ - static bool print_once_; \ - bool ret_print_once_ = !print_once_; \ - \ - if (!print_once_) { \ - print_once_ = true; \ - error_report(fmt, ##__VA_ARGS__); \ - } \ - unlikely(ret_print_once_); \ +#define error_report_once(fmt, ...) \ + ({ \ + static bool print_once_; \ + error_report_once_cond(&print_once_, \ + fmt, ##__VA_ARGS__); \ }) /* * Similar to warn_report(), except it prints the message just once. * Return true when it prints, false otherwise. */ -#define warn_report_once(fmt, ...) \ - ({ \ - static bool print_once_; \ - bool ret_print_once_ = !print_once_; \ - \ - if (!print_once_) { \ - print_once_ = true; \ - warn_report(fmt, ##__VA_ARGS__); \ - } \ - unlikely(ret_print_once_); \ +#define warn_report_once(fmt, ...) \ + ({ \ + static bool print_once_; \ + warn_report_once_cond(&print_once_, \ + fmt, ##__VA_ARGS__); \ }) const char *error_get_progname(void);