From nobody Fri Mar 29 01:34:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1538489711247358.9553230029587; Tue, 2 Oct 2018 07:15:11 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AEABC30C62D1; Tue, 2 Oct 2018 14:15:08 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6331054573; Tue, 2 Oct 2018 14:15:08 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id A94F7180B5B7; Tue, 2 Oct 2018 14:15:07 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w92EF6BA020239 for ; Tue, 2 Oct 2018 10:15:06 -0400 Received: by smtp.corp.redhat.com (Postfix) id 6148A1C939; Tue, 2 Oct 2018 14:15:06 +0000 (UTC) Received: from kinshicho.redhat.com (unknown [10.40.205.2]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CC87827BBE for ; Tue, 2 Oct 2018 14:15:04 +0000 (UTC) From: Andrea Bolognani To: libvir-list@redhat.com Date: Tue, 2 Oct 2018 16:14:40 +0200 Message-Id: <20181002141446.20943-2-abologna@redhat.com> In-Reply-To: <20181002141446.20943-1-abologna@redhat.com> References: <20181002141446.20943-1-abologna@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-loop: libvir-list@redhat.com Subject: [libvirt] [RFC 1/7] util: Add 'level' argument to virReportErrorHelper() X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Tue, 02 Oct 2018 14:15:09 +0000 (UTC) X-ZohoMail: RDMRC_0 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Up until now it's been assumed that every single error reported through the helper would have VIR_ERR_ERROR level, but this will no longer be the case going forward so we need to make it a little more flexible. Signed-off-by: Andrea Bolognani --- src/access/viraccessdriverpolkit.c | 2 +- src/access/viraccessmanager.c | 2 +- src/datatypes.h | 30 ++++++++++++++++++++++++++---- src/libvirt.c | 1 + src/util/virbuffer.c | 4 ++-- src/util/virconf.c | 6 ++++-- src/util/virerror.c | 4 +++- src/util/virerror.h | 11 ++++++----- src/util/virkeyfile.c | 6 ++++-- src/util/virxml.c | 2 +- 10 files changed, 49 insertions(+), 19 deletions(-) diff --git a/src/access/viraccessdriverpolkit.c b/src/access/viraccessdrive= rpolkit.c index 6954d74a15..1f87e7e152 100644 --- a/src/access/viraccessdriverpolkit.c +++ b/src/access/viraccessdriverpolkit.c @@ -34,7 +34,7 @@ VIR_LOG_INIT("access.accessdriverpolkit"); =20 #define virAccessError(code, ...) \ - virReportErrorHelper(VIR_FROM_THIS, code, __FILE__, \ + virReportErrorHelper(VIR_FROM_THIS, code, VIR_ERR_ERROR, __FILE__, \ __FUNCTION__, __LINE__, __VA_ARGS__) =20 #define VIR_ACCESS_DRIVER_POLKIT_ACTION_PREFIX "org.libvirt.api" diff --git a/src/access/viraccessmanager.c b/src/access/viraccessmanager.c index e7b5bf38da..f4230b253a 100644 --- a/src/access/viraccessmanager.c +++ b/src/access/viraccessmanager.c @@ -37,7 +37,7 @@ VIR_LOG_INIT("access.accessmanager"); =20 #define virAccessError(code, ...) \ - virReportErrorHelper(VIR_FROM_THIS, code, __FILE__, \ + virReportErrorHelper(VIR_FROM_THIS, code, VIR_ERR_ERROR, __FILE__, \ __FUNCTION__, __LINE__, __VA_ARGS__) =20 struct _virAccessManager { diff --git a/src/datatypes.h b/src/datatypes.h index e1b38706dc..87d6aa9a80 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -49,7 +49,7 @@ extern virClassPtr virAdmClientClass; # define virCheckConnectReturn(obj, retval) \ do { \ if (!virObjectIsClass(obj, virConnectClass)) { \ - virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ + virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, VIR_= ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -59,7 +59,7 @@ extern virClassPtr virAdmClientClass; # define virCheckConnectGoto(obj, label) \ do { \ if (!virObjectIsClass(obj, virConnectClass)) { \ - virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ + virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, VIR_= ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ goto label; \ @@ -71,7 +71,7 @@ extern virClassPtr virAdmClientClass; virDomainPtr _dom =3D (obj); \ if (!virObjectIsClass(_dom, virDomainClass) || \ !virObjectIsClass(_dom->conn, virConnectClass)) { \ - virReportErrorHelper(VIR_FROM_DOM, VIR_ERR_INVALID_DOMAIN, \ + virReportErrorHelper(VIR_FROM_DOM, VIR_ERR_INVALID_DOMAIN, VIR= _ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -83,7 +83,7 @@ extern virClassPtr virAdmClientClass; virDomainPtr _dom =3D (obj); \ if (!virObjectIsClass(_dom, virDomainClass) || \ !virObjectIsClass(_dom->conn, virConnectClass)) { \ - virReportErrorHelper(VIR_FROM_DOM, VIR_ERR_INVALID_DOMAIN, \ + virReportErrorHelper(VIR_FROM_DOM, VIR_ERR_INVALID_DOMAIN, VIR= _ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ goto label; \ @@ -97,6 +97,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_net->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NETWORK, \ VIR_ERR_INVALID_NETWORK, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -110,6 +111,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_net->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NETWORK, \ VIR_ERR_INVALID_NETWORK, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ goto label; \ @@ -123,6 +125,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_iface->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_INTERFACE, \ VIR_ERR_INVALID_INTERFACE, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -137,6 +140,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_pool->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_STORAGE, \ VIR_ERR_INVALID_STORAGE_POOL, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -151,6 +155,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_pool->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_STORAGE, \ VIR_ERR_INVALID_STORAGE_POOL, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ goto label; \ @@ -164,6 +169,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_vol->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_STORAGE, \ VIR_ERR_INVALID_STORAGE_VOL, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -177,6 +183,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_vol->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_STORAGE, \ VIR_ERR_INVALID_STORAGE_VOL, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ goto label; \ @@ -190,6 +197,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_node->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NODEDEV, \ VIR_ERR_INVALID_NODE_DEVICE, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -204,6 +212,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_dev->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NODEDEV, \ VIR_ERR_INVALID_NODE_DEVICE, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ goto label; \ @@ -217,6 +226,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_secret->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_SECRET, \ VIR_ERR_INVALID_SECRET, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -231,6 +241,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_secret->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_SECRET, \ VIR_ERR_INVALID_SECRET, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -245,6 +256,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_st->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_STREAMS, \ VIR_ERR_INVALID_STREAM, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -258,6 +270,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_st->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_STREAMS, \ VIR_ERR_INVALID_STREAM, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ goto label; \ @@ -271,6 +284,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_nw->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NWFILTER, \ VIR_ERR_INVALID_NWFILTER, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -285,6 +299,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_nw->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NWFILTER, \ VIR_ERR_INVALID_NWFILTER_BINDING, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -300,6 +315,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_snap->domain->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_DOMAIN_SNAPSHOT, \ VIR_ERR_INVALID_DOMAIN_SNAPSHOT, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -358,6 +374,7 @@ extern virClassPtr virAdmClientClass; do { \ if (!virObjectIsClass(obj, virAdmConnectClass)) { \ virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -368,6 +385,7 @@ extern virClassPtr virAdmClientClass; do { \ if (!virObjectIsClass(obj, virAdmConnectClass)) { \ virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ goto label; \ @@ -380,6 +398,7 @@ extern virClassPtr virAdmClientClass; if (!virObjectIsClass(_srv, virAdmServerClass) || \ !virObjectIsClass(_srv->conn, virAdmConnectClass)) { \ virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -392,6 +411,7 @@ extern virClassPtr virAdmClientClass; if (!virObjectIsClass(_srv, virAdmServerClass) || \ !virObjectIsClass(_srv->conn, virAdmConnectClass)) { \ virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ goto label; \ @@ -405,6 +425,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_clt->srv, virAdmServerClass) || \ !virObjectIsClass(_clt->srv->conn, virAdmConnectClass)) { \ virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ virDispatchError(NULL); \ @@ -418,6 +439,7 @@ extern virClassPtr virAdmClientClass; !virObjectIsClass(_clt->srv, virAdmServerClass) || \ !virObjectIsClass(_clt->srv->conn, virAdmConnectClass)) { \ virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ + VIR_ERR_ERROR, \ __FILE__, __FUNCTION__, __LINE__, \ __FUNCTION__); \ goto label; \ diff --git a/src/libvirt.c b/src/libvirt.c index 0a738aefb1..3e0bb26b9f 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -988,6 +988,7 @@ virConnectOpenInternal(const char *name, #endif false)) { virReportErrorHelper(VIR_FROM_NONE, VIR_ERR_CONFIG_UNSUPPORTED, + VIR_ERR_ERROR, __FILE__, __FUNCTION__, __LINE__, _("libvirt was built without the '%s' dri= ver"), ret->uri->scheme); diff --git a/src/util/virbuffer.c b/src/util/virbuffer.c index 8a2108f2f2..6306b3f072 100644 --- a/src/util/virbuffer.c +++ b/src/util/virbuffer.c @@ -339,8 +339,8 @@ virBufferCheckErrorInternal(const virBuffer *buf, virReportOOMErrorFull(domcode, filename, funcname, linenr); errno =3D ENOMEM; } else { - virReportErrorHelper(domcode, VIR_ERR_INTERNAL_ERROR, filename, - funcname, linenr, "%s", + virReportErrorHelper(domcode, VIR_ERR_INTERNAL_ERROR, VIR_ERR_ERRO= R, + filename, funcname, linenr, "%s", _("Invalid buffer API usage")); errno =3D EINVAL; } diff --git a/src/util/virconf.c b/src/util/virconf.c index 88a869517e..8a382e8b6e 100644 --- a/src/util/virconf.c +++ b/src/util/virconf.c @@ -110,10 +110,12 @@ virConfErrorHelper(const char *file, const char *func= , size_t line, =20 /* Construct the string 'filename:line: info' if we have that. */ if (ctxt && ctxt->filename) { - virReportErrorHelper(VIR_FROM_CONF, error, file, func, line, + virReportErrorHelper(VIR_FROM_CONF, error, VIR_ERR_ERROR, + file, func, line, _("%s:%d: %s"), ctxt->filename, ctxt->line, i= nfo); } else { - virReportErrorHelper(VIR_FROM_CONF, error, file, func, line, + virReportErrorHelper(VIR_FROM_CONF, error, VIR_ERR_ERROR, + file, func, line, "%s", info); } } diff --git a/src/util/virerror.c b/src/util/virerror.c index 683e51aa19..517e0bde28 100644 --- a/src/util/virerror.c +++ b/src/util/virerror.c @@ -1518,6 +1518,7 @@ virErrorMsg(virErrorNumber error, const char *info) * * @domcode: the virErrorDomain indicating where it's coming from * @errorcode: the virErrorNumber code for the error + * @level: the virErrorLevel level for the error * @filename: Source file error is dispatched from * @funcname: Function error is dispatched from * @linenr: Line number error is dispatched from @@ -1529,6 +1530,7 @@ virErrorMsg(virErrorNumber error, const char *info) */ void virReportErrorHelper(int domcode, int errorcode, + virErrorLevel level, const char *filename, const char *funcname, size_t linenr, @@ -1549,7 +1551,7 @@ void virReportErrorHelper(int domcode, =20 virerr =3D virErrorMsg(errorcode, (errorMessage[0] ? errorMessage : NU= LL)); virRaiseErrorFull(filename, funcname, linenr, - domcode, errorcode, VIR_ERR_ERROR, + domcode, errorcode, level, virerr, errorMessage, NULL, -1, -1, virerr, errorMessage); errno =3D save_errno; diff --git a/src/util/virerror.h b/src/util/virerror.h index 31577c5c8c..6e089db0d0 100644 --- a/src/util/virerror.h +++ b/src/util/virerror.h @@ -51,11 +51,12 @@ void virRaiseErrorObject(const char *filename, virErrorPtr err); =20 void virReportErrorHelper(int domcode, int errcode, + virErrorLevel level, const char *filename, const char *funcname, size_t linenr, const char *fmt, ...) - ATTRIBUTE_FMT_PRINTF(6, 7); + ATTRIBUTE_FMT_PRINTF(7, 8); =20 void virReportSystemErrorFull(int domcode, int theerrno, @@ -160,10 +161,10 @@ void virReportSystemErrorFull(int domcode, (fmt), __VA_ARGS__) =20 # define virReportUnsupportedError() \ - virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_NO_SUPPORT, \ + virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_NO_SUPPORT, VIR_ERR_ERROR,= \ __FILE__, __FUNCTION__, __LINE__, __FUNCTION__) # define virReportRestrictedError(...) \ - virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_OPERATION_DENIED, \ + virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_OPERATION_DENIED, VIR_ERR_= ERROR, \ __FILE__, __FUNCTION__, __LINE__, __VA_ARGS__) /* The sizeof(...) comparison here is a hack to catch typos * in the name of the enum by triggering a compile error, as well @@ -171,7 +172,7 @@ void virReportSystemErrorFull(int domcode, * or struct type, instead of an enum. It should get optimized away * since sizeof() is known at compile time */ # define virReportEnumRangeError(typname, value) \ - virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INTERNAL_ERROR, \ + virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INTERNAL_ERROR, VIR_ERR_ER= ROR, \ __FILE__, __FUNCTION__, __LINE__, \ "Unexpected enum value %d for %s", \ value, sizeof((typname)1) !=3D 0 ? #typname : #ty= pname); @@ -185,7 +186,7 @@ void virReportOOMErrorFull(int domcode, virReportOOMErrorFull(VIR_FROM_THIS, __FILE__, __FUNCTION__, __LINE__) =20 # define virReportError(code, ...) \ - virReportErrorHelper(VIR_FROM_THIS, code, __FILE__, \ + virReportErrorHelper(VIR_FROM_THIS, code, VIR_ERR_ERROR, __FILE__, \ __FUNCTION__, __LINE__, __VA_ARGS__) =20 # define virReportErrorObject(obj) \ diff --git a/src/util/virkeyfile.c b/src/util/virkeyfile.c index 1006a88837..4a0a7f5ee8 100644 --- a/src/util/virkeyfile.c +++ b/src/util/virkeyfile.c @@ -93,10 +93,12 @@ virKeyFileErrorHelper(const char *file, const char *fun= c, size_t line, { /* Construct the string 'filename:line: info' if we have that. */ if (ctxt && ctxt->filename) { - virReportErrorHelper(VIR_FROM_CONF, error, file, func, line, + virReportErrorHelper(VIR_FROM_CONF, error, VIR_ERR_ERROR, + file, func, line, _("%s:%zu: %s '%s'"), ctxt->filename, ctxt->l= ine, info, ctxt->cur); } else { - virReportErrorHelper(VIR_FROM_CONF, error, file, func, line, + virReportErrorHelper(VIR_FROM_CONF, error, VIR_ERR_ERROR, + file, func, line, "%s", info); } } diff --git a/src/util/virxml.c b/src/util/virxml.c index 998d974882..a5975e6665 100644 --- a/src/util/virxml.c +++ b/src/util/virxml.c @@ -37,7 +37,7 @@ #define VIR_FROM_THIS VIR_FROM_XML =20 #define virGenericReportError(from, code, ...) \ - virReportErrorHelper(from, code, __FILE__, \ + virReportErrorHelper(from, code, VIR_ERR_ERROR, __FILE__, \ __FUNCTION__, __LINE__, __VA_ARGS__) =20 /* Internal data to be passed to SAX parser and used by error handler. */ --=20 2.17.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list