Commit e43ead1d authored by Alistair Francis's avatar Alistair Francis Committed by Markus Armbruster
Browse files

error: Implement the warn and free Error functions



Implement warn_report_err() and warn_reportf_err() functions which
are the same as the error_report_err() and error_reportf_err()
functions except report a warning instead of an error.

Signed-off-by: default avatarAlistair Francis <alistair.francis@xilinx.com>
Reviewed-by: default avatarMarkus Armbruster <armbru@redhat.com>
Message-Id: <276ff93eadc0b01b8243cc61ffc331f77922c0d0.1499866456.git.alistair.francis@xilinx.com>
Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
parent c51c4f88
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -266,11 +266,22 @@ void error_free(Error *err);
 */
void error_free_or_abort(Error **errp);

/*
 * Convenience function to warn_report() and free @err.
 */
void warn_report_err(Error *err);

/*
 * Convenience function to error_report() and free @err.
 */
void error_report_err(Error *err);

/*
 * Convenience function to error_prepend(), warn_report() and free @err.
 */
void warn_reportf_err(Error *err, const char *fmt, ...)
    GCC_FMT_ATTR(2, 3);

/*
 * Convenience function to error_prepend(), error_report() and free @err.
 */
+1 −0
Original line number Diff line number Diff line
@@ -2533,6 +2533,7 @@ sub process {
				error_setg_file_open|
				error_set|
				error_prepend|
				warn_reportf_err|
				error_reportf_err|
				error_vreport|
				warn_vreport|
+20 −0
Original line number Diff line number Diff line
@@ -232,6 +232,15 @@ void error_report_err(Error *err)
    error_free(err);
}

void warn_report_err(Error *err)
{
    warn_report("%s", error_get_pretty(err));
    if (err->hint) {
        error_printf_unless_qmp("%s", err->hint->str);
    }
    error_free(err);
}

void error_reportf_err(Error *err, const char *fmt, ...)
{
    va_list ap;
@@ -242,6 +251,17 @@ void error_reportf_err(Error *err, const char *fmt, ...)
    error_report_err(err);
}


void warn_reportf_err(Error *err, const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    error_vprepend(&err, fmt, ap);
    va_end(ap);
    warn_report_err(err);
}

void error_free(Error *err)
{
    if (err) {