While we still don't want to enable gcc's new -Wformat-literal warning, I found a rather easy case where the warning could be reduced, by getting rid of obsolete error-reporting practices. This is the last place where we were passing the (unused) net and conn arguments for constructing an error. * src/util/virterror_internal.h (virErrorMsg): Delete prototype. (virReportError): Delete macro. * src/util/virterror.c (virErrorMsg): Make static. * src/libvirt_private.syms (virterror_internal.h): Drop export. * src/util/conf.c (virConfError): Convert to macro. (virConfErrorHelper): New function, and adjust error calls. * src/xen/xen_hypervisor.c (virXenErrorFunc): Delete. (xenHypervisorGetSchedulerType) (xenHypervisorGetSchedulerParameters) (xenHypervisorSetSchedulerParameters) (xenHypervisorDomainBlockStats) (xenHypervisorDomainInterfaceStats) (xenHypervisorDomainGetOSType) (xenHypervisorNodeGetCellsFreeMemory, xenHypervisorGetVcpus): Update callers. --- src/libvirt_private.syms | 1 - src/util/conf.c | 22 ++--- src/util/virterror.c | 2 +- src/util/virterror_internal.h | 8 -- src/xen/xen_hypervisor.c | 164 ++++++++++++++++------------------------ 5 files changed, 76 insertions(+), 121 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 9a7200b..f8d97d1 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1387,7 +1387,6 @@ virSocketAddrSetPort; # virterror_internal.h virDispatchError; -virErrorMsg; virRaiseErrorFull; virReportErrorHelper; virReportOOMErrorFull; diff --git a/src/util/conf.c b/src/util/conf.c index 502dafb..8ad60e0 100644 --- a/src/util/conf.c +++ b/src/util/conf.c @@ -89,27 +89,23 @@ struct _virConf { * * Handle an error at the xend daemon interface */ +#define virConfError(ctxt, error, info) \ + virConfErrorHelper(__FILE__, __FUNCTION__, __LINE__, ctxt, error, info) static void -virConfError(virConfParserCtxtPtr ctxt, - virErrorNumber error, const char *info) +virConfErrorHelper(const char *file, const char *func, size_t line, + virConfParserCtxtPtr ctxt, + virErrorNumber error, const char *info) { - const char *format; - if (error == VIR_ERR_OK) return; /* Construct the string 'filename:line: info' if we have that. */ if (ctxt && ctxt->filename) { - virRaiseError(NULL, NULL, VIR_FROM_CONF, error, VIR_ERR_ERROR, - info, ctxt->filename, NULL, - ctxt->line, 0, - "%s:%d: %s", ctxt->filename, ctxt->line, info); + virReportErrorHelper(VIR_FROM_CONF, error, file, func, line, + _("%s:%d: %s"), ctxt->filename, ctxt->line, info); } else { - format = virErrorMsg(error, info); - virRaiseError(NULL, NULL, VIR_FROM_CONF, error, VIR_ERR_ERROR, - info, NULL, NULL, - ctxt ? ctxt->line : 0, 0, - format, info); + virReportErrorHelper(VIR_FROM_CONF, error, file, func, line, + "%s", info); } } diff --git a/src/util/virterror.c b/src/util/virterror.c index 8205516..ff44a57 100644 --- a/src/util/virterror.c +++ b/src/util/virterror.c @@ -756,7 +756,7 @@ virRaiseErrorFull(const char *filename ATTRIBUTE_UNUSED, * * Returns the constant string associated to @error */ -const char * +static const char * virErrorMsg(virErrorNumber error, const char *info) { const char *errmsg = NULL; diff --git a/src/util/virterror_internal.h b/src/util/virterror_internal.h index d61ea0d..b8cb279 100644 --- a/src/util/virterror_internal.h +++ b/src/util/virterror_internal.h @@ -47,14 +47,6 @@ void virRaiseErrorFull(const char *filename, const char *fmt, ...) ATTRIBUTE_FMT_PRINTF(12, 13); -/* Includes 'dom' and 'net' for compatbility, but they're ignored */ -# define virRaiseError(dom, net, domain, code, level, \ - str1, str2, str3, int1, int2, msg, ...) \ - virRaiseErrorFull(__FILE__, __FUNCTION__, __LINE__, \ - domain, code, level, str1, str2, str3, int1, int2, \ - msg, __VA_ARGS__) - -const char *virErrorMsg(virErrorNumber error, const char *info); void virReportErrorHelper(int domcode, int errcode, const char *filename, const char *funcname, diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c index 0c92be8..2bb3466 100644 --- a/src/xen/xen_hypervisor.c +++ b/src/xen/xen_hypervisor.c @@ -880,40 +880,6 @@ struct xenUnifiedDriver xenHypervisorDriver = { __FUNCTION__, __LINE__, __VA_ARGS__) /** - * virXenErrorFunc: - * @error: the error number - * @func: the function failing - * @info: extra information string - * @value: extra information number - * - * Handle an error at the xend daemon interface - */ -static void -virXenErrorFunc(virErrorNumber error, const char *func, const char *info, - int value) -{ - char fullinfo[1000]; - const char *errmsg; - - if ((error == VIR_ERR_OK) || (in_init != 0)) - return; - - - errmsg =virErrorMsg(error, info); - if (func != NULL) { - snprintf(fullinfo, 999, "%s: %s", func, info); - fullinfo[999] = 0; - virRaiseError(NULL, NULL, VIR_FROM_XEN, error, VIR_ERR_ERROR, - errmsg, fullinfo, NULL, value, 0, errmsg, fullinfo, - value); - } else { - virRaiseError(NULL, NULL, VIR_FROM_XEN, error, VIR_ERR_ERROR, - errmsg, info, NULL, value, 0, errmsg, info, - value); - } -} - -/** * xenHypervisorDoV0Op: * @handle: the handle to the Xen hypervisor * @op: pointer to the hypervisor operation structure @@ -1195,15 +1161,15 @@ xenHypervisorGetSchedulerType(virDomainPtr domain, int *nparams) xenUnifiedPrivatePtr priv; if (domain->conn == NULL) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - "domain or conn is NULL", 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("domain or conn is NULL")); return NULL; } priv = (xenUnifiedPrivatePtr) domain->conn->privateData; if (priv->handle < 0) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - "priv->handle invalid", 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("priv->handle invalid")); return NULL; } if (domain->id < 0) { @@ -1218,8 +1184,8 @@ xenHypervisorGetSchedulerType(virDomainPtr domain, int *nparams) * TODO: check on Xen 3.0.3 */ if (hv_versions.dom_interface < 5) { - virXenErrorFunc(VIR_ERR_NO_XEN, __FUNCTION__, - "unsupported in dom interface < 5", 0); + virXenError(VIR_ERR_NO_XEN, "%s", + _("unsupported in dom interface < 5")); return NULL; } @@ -1276,15 +1242,15 @@ xenHypervisorGetSchedulerParameters(virDomainPtr domain, xenUnifiedPrivatePtr priv; if (domain->conn == NULL) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - "domain or conn is NULL", 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("domain or conn is NULL")); return -1; } priv = (xenUnifiedPrivatePtr) domain->conn->privateData; if (priv->handle < 0) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - "priv->handle invalid", 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("priv->handle invalid")); return -1; } if (domain->id < 0) { @@ -1299,8 +1265,8 @@ xenHypervisorGetSchedulerParameters(virDomainPtr domain, * TODO: check on Xen 3.0.3 */ if (hv_versions.dom_interface < 5) { - virXenErrorFunc(VIR_ERR_NO_XEN, __FUNCTION__, - "unsupported in dom interface < 5", 0); + virXenError(VIR_ERR_NO_XEN, "%s", + _("unsupported in dom interface < 5")); return -1; } @@ -1353,8 +1319,9 @@ xenHypervisorGetSchedulerParameters(virDomainPtr domain, *nparams = XEN_SCHED_CRED_NPARAM; break; default: - virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, - "Unknown scheduler", op_sys.u.getschedulerid.sched_id); + virXenError(VIR_ERR_INVALID_ARG, + _("Unknown scheduler %d"), + op_sys.u.getschedulerid.sched_id); return -1; } } @@ -1381,8 +1348,8 @@ xenHypervisorSetSchedulerParameters(virDomainPtr domain, char buf[256]; if (domain->conn == NULL) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - "domain or conn is NULL", 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("domain or conn is NULL")); return -1; } @@ -1401,8 +1368,8 @@ xenHypervisorSetSchedulerParameters(virDomainPtr domain, priv = (xenUnifiedPrivatePtr) domain->conn->privateData; if (priv->handle < 0) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - "priv->handle invalid", 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("priv->handle invalid")); return -1; } if (domain->id < 0) { @@ -1417,8 +1384,8 @@ xenHypervisorSetSchedulerParameters(virDomainPtr domain, * TODO: check on Xen 3.0.3 */ if (hv_versions.dom_interface < 5) { - virXenErrorFunc(VIR_ERR_NO_XEN, __FUNCTION__, - "unsupported in dom interface < 5", 0); + virXenError(VIR_ERR_NO_XEN, "%s", + _("unsupported in dom interface < 5")); return -1; } @@ -1456,16 +1423,18 @@ xenHypervisorSetSchedulerParameters(virDomainPtr domain, if (STREQ(params[i].field, VIR_DOMAIN_SCHEDULER_WEIGHT)) { val = params[i].value.ui; if ((val < 1) || (val > USHRT_MAX)) { - snprintf(buf, sizeof(buf), _("Credit scheduler weight parameter (%d) is out of range (1-65535)"), val); - virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, buf, val); + virXenError(VIR_ERR_INVALID_ARG, + _("Credit scheduler weight parameter (%d) " + "is out of range (1-65535)"), val); return(-1); } op_dom.u.getschedinfo.u.credit.weight = val; } else if (STREQ(params[i].field, VIR_DOMAIN_SCHEDULER_CAP)) { val = params[i].value.ui; if (val >= USHRT_MAX) { - snprintf(buf, sizeof(buf), _("Credit scheduler cap parameter (%d) is out of range (0-65534)"), val); - virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, buf, val); + virXenError(VIR_ERR_INVALID_ARG, + _("Credit scheduler cap parameter (%d) is " + "out of range (0-65534)"), val); return(-1); } op_dom.u.getschedinfo.u.credit.cap = val; @@ -1478,8 +1447,9 @@ xenHypervisorSetSchedulerParameters(virDomainPtr domain, break; } default: - virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, - "Unknown scheduler", op_sys.u.getschedulerid.sched_id); + virXenError(VIR_ERR_INVALID_ARG, + _("Unknown scheduler %d"), + op_sys.u.getschedulerid.sched_id); return -1; } } @@ -1504,9 +1474,8 @@ xenHypervisorDomainBlockStats (virDomainPtr dom, xenUnifiedUnlock(priv); return ret; #else - virXenErrorFunc(VIR_ERR_OPERATION_INVALID, __FUNCTION__, - "block statistics not supported on this platform", - dom->id); + virXenError(VIR_ERR_OPERATION_INVALID, "%s", + _("block statistics not supported on this platform")); return -1; #endif } @@ -1529,21 +1498,21 @@ xenHypervisorDomainInterfaceStats (virDomainPtr dom, /* Verify that the vif requested is one belonging to the current * domain. */ - if (sscanf (path, "vif%d.%d", &rqdomid, &device) != 2) { - virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, - "invalid path, should be vif<domid>.<n>.", 0); + if (sscanf(path, "vif%d.%d", &rqdomid, &device) != 2) { + virXenError(VIR_ERR_INVALID_ARG, "%s", + _("invalid path, should be vif<domid>.<n>.")); return -1; } if (rqdomid != dom->id) { - virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, - "invalid path, vif<domid> should match this domain ID", 0); + virXenError(VIR_ERR_INVALID_ARG, "%s", + _("invalid path, vif<domid> should match this domain ID")); return -1; } return linuxDomainInterfaceStats(path, stats); #else - virXenErrorFunc(VIR_ERR_OPERATION_INVALID, __FUNCTION__, - "/proc/net/dev: Interface not found", 0); + virXenError(VIR_ERR_OPERATION_INVALID, "%s", + _("/proc/net/dev: Interface not found")); return -1; #endif } @@ -2953,30 +2922,30 @@ xenHypervisorDomainGetOSType (virDomainPtr dom) priv = (xenUnifiedPrivatePtr) dom->conn->privateData; if (priv->handle < 0) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - _("domain shut off or invalid"), 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("domain shut off or invalid")); return (NULL); } /* HV's earlier than 3.1.0 don't include the HVM flags in guests status*/ if (hv_versions.hypervisor < 2 || hv_versions.dom_interface < 4) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - _("unsupported in dom interface < 4"), 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("unsupported in dom interface < 4")); return (NULL); } XEN_GETDOMAININFO_CLEAR(dominfo); if (virXen_getdomaininfo(priv->handle, dom->id, &dominfo) < 0) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - _("cannot get domain details"), 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("cannot get domain details")); return (NULL); } if (XEN_GETDOMAININFO_DOMAIN(dominfo) != dom->id) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - _("cannot get domain details"), 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("cannot get domain details")); return (NULL); } @@ -3375,22 +3344,21 @@ xenHypervisorNodeGetCellsFreeMemory(virConnectPtr conn, unsigned long long *free xenUnifiedPrivatePtr priv; if (conn == NULL) { - virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, - "invalid argument", 0); + virXenError(VIR_ERR_INVALID_ARG, "%s", _("invalid argument")); return -1; } priv = conn->privateData; if (priv->nbNodeCells < 0) { - virXenErrorFunc(VIR_ERR_XEN_CALL, __FUNCTION__, - "cannot determine actual number of cells",0); + virXenError(VIR_ERR_XEN_CALL, "%s", + _("cannot determine actual number of cells")); return(-1); } if ((maxCells < 1) || (startCell >= priv->nbNodeCells)) { - virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, - "invalid argument", 0); + virXenError(VIR_ERR_INVALID_ARG, "%s", + _("invalid argument")); return -1; } @@ -3398,14 +3366,14 @@ xenHypervisorNodeGetCellsFreeMemory(virConnectPtr conn, unsigned long long *free * Support only hv_versions.sys_interface >=4 */ if (hv_versions.sys_interface < SYS_IFACE_MIN_VERS_NUMA) { - virXenErrorFunc(VIR_ERR_XEN_CALL, __FUNCTION__, - "unsupported in sys interface < 4", 0); + virXenError(VIR_ERR_XEN_CALL, "%s", + _("unsupported in sys interface < 4")); return -1; } if (priv->handle < 0) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - "priv->handle invalid", 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("priv->handle invalid")); return -1; } @@ -3646,13 +3614,13 @@ xenHypervisorGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo, if (priv->handle < 0 || (domain->id < 0) || (info == NULL) || (maxinfo < 1) || (sizeof(cpumap_t) & 7)) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - _("domain shut off or invalid"), 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("domain shut off or invalid")); return (-1); } if ((cpumaps != NULL) && (maplen < 1)) { - virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, - "invalid argument", 0); + virXenError(VIR_ERR_INVALID_ARG, "%s", + _("invalid argument")); return -1; } /* first get the number of virtual CPUs in this domain */ @@ -3661,8 +3629,8 @@ xenHypervisorGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo, &dominfo); if ((ret < 0) || (XEN_GETDOMAININFO_DOMAIN(dominfo) != domain->id)) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - _("cannot get domain details"), 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("cannot get domain details")); return (-1); } nbinfo = XEN_GETDOMAININFO_CPUCOUNT(dominfo) + 1; @@ -3678,16 +3646,16 @@ xenHypervisorGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo, (unsigned char *)VIR_GET_CPUMAP(cpumaps, maplen, i), maplen); if (ret < 0) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - _("cannot get VCPUs info"), 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("cannot get VCPUs info")); return(-1); } } else { ret = virXen_getvcpusinfo(priv->handle, domain->id, i, ipt, NULL, 0); if (ret < 0) { - virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, - _("cannot get VCPUs info"), 0); + virXenError(VIR_ERR_INTERNAL_ERROR, "%s", + _("cannot get VCPUs info")); return(-1); } } -- 1.7.7.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list