error: drop old-style error reporting

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.
This commit is contained in:
Eric Blake 2011-11-28 16:13:40 -07:00
parent 9e48c22534
commit c2551bea56
5 changed files with 76 additions and 121 deletions

View File

@ -1388,7 +1388,6 @@ virSocketAddrSetPort;
# virterror_internal.h # virterror_internal.h
virDispatchError; virDispatchError;
virErrorMsg;
virRaiseErrorFull; virRaiseErrorFull;
virReportErrorHelper; virReportErrorHelper;
virReportOOMErrorFull; virReportOOMErrorFull;

View File

@ -89,27 +89,23 @@ struct _virConf {
* *
* Handle an error at the xend daemon interface * Handle an error at the xend daemon interface
*/ */
#define virConfError(ctxt, error, info) \
virConfErrorHelper(__FILE__, __FUNCTION__, __LINE__, ctxt, error, info)
static void static void
virConfError(virConfParserCtxtPtr ctxt, virConfErrorHelper(const char *file, const char *func, size_t line,
virErrorNumber error, const char *info) virConfParserCtxtPtr ctxt,
virErrorNumber error, const char *info)
{ {
const char *format;
if (error == VIR_ERR_OK) if (error == VIR_ERR_OK)
return; return;
/* Construct the string 'filename:line: info' if we have that. */ /* Construct the string 'filename:line: info' if we have that. */
if (ctxt && ctxt->filename) { if (ctxt && ctxt->filename) {
virRaiseError(NULL, NULL, VIR_FROM_CONF, error, VIR_ERR_ERROR, virReportErrorHelper(VIR_FROM_CONF, error, file, func, line,
info, ctxt->filename, NULL, _("%s:%d: %s"), ctxt->filename, ctxt->line, info);
ctxt->line, 0,
"%s:%d: %s", ctxt->filename, ctxt->line, info);
} else { } else {
format = virErrorMsg(error, info); virReportErrorHelper(VIR_FROM_CONF, error, file, func, line,
virRaiseError(NULL, NULL, VIR_FROM_CONF, error, VIR_ERR_ERROR, "%s", info);
info, NULL, NULL,
ctxt ? ctxt->line : 0, 0,
format, info);
} }
} }

View File

@ -756,7 +756,7 @@ virRaiseErrorFull(const char *filename ATTRIBUTE_UNUSED,
* *
* Returns the constant string associated to @error * Returns the constant string associated to @error
*/ */
const char * static const char *
virErrorMsg(virErrorNumber error, const char *info) virErrorMsg(virErrorNumber error, const char *info)
{ {
const char *errmsg = NULL; const char *errmsg = NULL;

View File

@ -47,14 +47,6 @@ void virRaiseErrorFull(const char *filename,
const char *fmt, ...) const char *fmt, ...)
ATTRIBUTE_FMT_PRINTF(12, 13); 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, void virReportErrorHelper(int domcode, int errcode,
const char *filename, const char *filename,
const char *funcname, const char *funcname,

View File

@ -879,40 +879,6 @@ struct xenUnifiedDriver xenHypervisorDriver = {
virReportErrorHelper(VIR_FROM_XEN, code, __FILE__, \ virReportErrorHelper(VIR_FROM_XEN, code, __FILE__, \
__FUNCTION__, __LINE__, __VA_ARGS__) __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: * xenHypervisorDoV0Op:
* @handle: the handle to the Xen hypervisor * @handle: the handle to the Xen hypervisor
@ -1195,15 +1161,15 @@ xenHypervisorGetSchedulerType(virDomainPtr domain, int *nparams)
xenUnifiedPrivatePtr priv; xenUnifiedPrivatePtr priv;
if (domain->conn == NULL) { if (domain->conn == NULL) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
"domain or conn is NULL", 0); _("domain or conn is NULL"));
return NULL; return NULL;
} }
priv = (xenUnifiedPrivatePtr) domain->conn->privateData; priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
if (priv->handle < 0) { if (priv->handle < 0) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
"priv->handle invalid", 0); _("priv->handle invalid"));
return NULL; return NULL;
} }
if (domain->id < 0) { if (domain->id < 0) {
@ -1218,8 +1184,8 @@ xenHypervisorGetSchedulerType(virDomainPtr domain, int *nparams)
* TODO: check on Xen 3.0.3 * TODO: check on Xen 3.0.3
*/ */
if (hv_versions.dom_interface < 5) { if (hv_versions.dom_interface < 5) {
virXenErrorFunc(VIR_ERR_NO_XEN, __FUNCTION__, virXenError(VIR_ERR_NO_XEN, "%s",
"unsupported in dom interface < 5", 0); _("unsupported in dom interface < 5"));
return NULL; return NULL;
} }
@ -1276,15 +1242,15 @@ xenHypervisorGetSchedulerParameters(virDomainPtr domain,
xenUnifiedPrivatePtr priv; xenUnifiedPrivatePtr priv;
if (domain->conn == NULL) { if (domain->conn == NULL) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
"domain or conn is NULL", 0); _("domain or conn is NULL"));
return -1; return -1;
} }
priv = (xenUnifiedPrivatePtr) domain->conn->privateData; priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
if (priv->handle < 0) { if (priv->handle < 0) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
"priv->handle invalid", 0); _("priv->handle invalid"));
return -1; return -1;
} }
if (domain->id < 0) { if (domain->id < 0) {
@ -1299,8 +1265,8 @@ xenHypervisorGetSchedulerParameters(virDomainPtr domain,
* TODO: check on Xen 3.0.3 * TODO: check on Xen 3.0.3
*/ */
if (hv_versions.dom_interface < 5) { if (hv_versions.dom_interface < 5) {
virXenErrorFunc(VIR_ERR_NO_XEN, __FUNCTION__, virXenError(VIR_ERR_NO_XEN, "%s",
"unsupported in dom interface < 5", 0); _("unsupported in dom interface < 5"));
return -1; return -1;
} }
@ -1353,8 +1319,9 @@ xenHypervisorGetSchedulerParameters(virDomainPtr domain,
*nparams = XEN_SCHED_CRED_NPARAM; *nparams = XEN_SCHED_CRED_NPARAM;
break; break;
default: default:
virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, virXenError(VIR_ERR_INVALID_ARG,
"Unknown scheduler", op_sys.u.getschedulerid.sched_id); _("Unknown scheduler %d"),
op_sys.u.getschedulerid.sched_id);
return -1; return -1;
} }
} }
@ -1381,8 +1348,8 @@ xenHypervisorSetSchedulerParameters(virDomainPtr domain,
char buf[256]; char buf[256];
if (domain->conn == NULL) { if (domain->conn == NULL) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
"domain or conn is NULL", 0); _("domain or conn is NULL"));
return -1; return -1;
} }
@ -1401,8 +1368,8 @@ xenHypervisorSetSchedulerParameters(virDomainPtr domain,
priv = (xenUnifiedPrivatePtr) domain->conn->privateData; priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
if (priv->handle < 0) { if (priv->handle < 0) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
"priv->handle invalid", 0); _("priv->handle invalid"));
return -1; return -1;
} }
if (domain->id < 0) { if (domain->id < 0) {
@ -1417,8 +1384,8 @@ xenHypervisorSetSchedulerParameters(virDomainPtr domain,
* TODO: check on Xen 3.0.3 * TODO: check on Xen 3.0.3
*/ */
if (hv_versions.dom_interface < 5) { if (hv_versions.dom_interface < 5) {
virXenErrorFunc(VIR_ERR_NO_XEN, __FUNCTION__, virXenError(VIR_ERR_NO_XEN, "%s",
"unsupported in dom interface < 5", 0); _("unsupported in dom interface < 5"));
return -1; return -1;
} }
@ -1456,16 +1423,18 @@ xenHypervisorSetSchedulerParameters(virDomainPtr domain,
if (STREQ(params[i].field, VIR_DOMAIN_SCHEDULER_WEIGHT)) { if (STREQ(params[i].field, VIR_DOMAIN_SCHEDULER_WEIGHT)) {
val = params[i].value.ui; val = params[i].value.ui;
if ((val < 1) || (val > USHRT_MAX)) { if ((val < 1) || (val > USHRT_MAX)) {
snprintf(buf, sizeof(buf), _("Credit scheduler weight parameter (%d) is out of range (1-65535)"), val); virXenError(VIR_ERR_INVALID_ARG,
virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, buf, val); _("Credit scheduler weight parameter (%d) "
"is out of range (1-65535)"), val);
return(-1); return(-1);
} }
op_dom.u.getschedinfo.u.credit.weight = val; op_dom.u.getschedinfo.u.credit.weight = val;
} else if (STREQ(params[i].field, VIR_DOMAIN_SCHEDULER_CAP)) { } else if (STREQ(params[i].field, VIR_DOMAIN_SCHEDULER_CAP)) {
val = params[i].value.ui; val = params[i].value.ui;
if (val >= USHRT_MAX) { if (val >= USHRT_MAX) {
snprintf(buf, sizeof(buf), _("Credit scheduler cap parameter (%d) is out of range (0-65534)"), val); virXenError(VIR_ERR_INVALID_ARG,
virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, buf, val); _("Credit scheduler cap parameter (%d) is "
"out of range (0-65534)"), val);
return(-1); return(-1);
} }
op_dom.u.getschedinfo.u.credit.cap = val; op_dom.u.getschedinfo.u.credit.cap = val;
@ -1478,8 +1447,9 @@ xenHypervisorSetSchedulerParameters(virDomainPtr domain,
break; break;
} }
default: default:
virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, virXenError(VIR_ERR_INVALID_ARG,
"Unknown scheduler", op_sys.u.getschedulerid.sched_id); _("Unknown scheduler %d"),
op_sys.u.getschedulerid.sched_id);
return -1; return -1;
} }
} }
@ -1504,9 +1474,8 @@ xenHypervisorDomainBlockStats (virDomainPtr dom,
xenUnifiedUnlock(priv); xenUnifiedUnlock(priv);
return ret; return ret;
#else #else
virXenErrorFunc(VIR_ERR_OPERATION_INVALID, __FUNCTION__, virXenError(VIR_ERR_OPERATION_INVALID, "%s",
"block statistics not supported on this platform", _("block statistics not supported on this platform"));
dom->id);
return -1; return -1;
#endif #endif
} }
@ -1529,21 +1498,21 @@ xenHypervisorDomainInterfaceStats (virDomainPtr dom,
/* Verify that the vif requested is one belonging to the current /* Verify that the vif requested is one belonging to the current
* domain. * domain.
*/ */
if (sscanf (path, "vif%d.%d", &rqdomid, &device) != 2) { if (sscanf(path, "vif%d.%d", &rqdomid, &device) != 2) {
virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, virXenError(VIR_ERR_INVALID_ARG, "%s",
"invalid path, should be vif<domid>.<n>.", 0); _("invalid path, should be vif<domid>.<n>."));
return -1; return -1;
} }
if (rqdomid != dom->id) { if (rqdomid != dom->id) {
virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, virXenError(VIR_ERR_INVALID_ARG, "%s",
"invalid path, vif<domid> should match this domain ID", 0); _("invalid path, vif<domid> should match this domain ID"));
return -1; return -1;
} }
return linuxDomainInterfaceStats(path, stats); return linuxDomainInterfaceStats(path, stats);
#else #else
virXenErrorFunc(VIR_ERR_OPERATION_INVALID, __FUNCTION__, virXenError(VIR_ERR_OPERATION_INVALID, "%s",
"/proc/net/dev: Interface not found", 0); _("/proc/net/dev: Interface not found"));
return -1; return -1;
#endif #endif
} }
@ -2953,30 +2922,30 @@ xenHypervisorDomainGetOSType (virDomainPtr dom)
priv = (xenUnifiedPrivatePtr) dom->conn->privateData; priv = (xenUnifiedPrivatePtr) dom->conn->privateData;
if (priv->handle < 0) { if (priv->handle < 0) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
_("domain shut off or invalid"), 0); _("domain shut off or invalid"));
return (NULL); return (NULL);
} }
/* HV's earlier than 3.1.0 don't include the HVM flags in guests status*/ /* HV's earlier than 3.1.0 don't include the HVM flags in guests status*/
if (hv_versions.hypervisor < 2 || if (hv_versions.hypervisor < 2 ||
hv_versions.dom_interface < 4) { hv_versions.dom_interface < 4) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
_("unsupported in dom interface < 4"), 0); _("unsupported in dom interface < 4"));
return (NULL); return (NULL);
} }
XEN_GETDOMAININFO_CLEAR(dominfo); XEN_GETDOMAININFO_CLEAR(dominfo);
if (virXen_getdomaininfo(priv->handle, dom->id, &dominfo) < 0) { if (virXen_getdomaininfo(priv->handle, dom->id, &dominfo) < 0) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
_("cannot get domain details"), 0); _("cannot get domain details"));
return (NULL); return (NULL);
} }
if (XEN_GETDOMAININFO_DOMAIN(dominfo) != dom->id) { if (XEN_GETDOMAININFO_DOMAIN(dominfo) != dom->id) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
_("cannot get domain details"), 0); _("cannot get domain details"));
return (NULL); return (NULL);
} }
@ -3375,22 +3344,21 @@ xenHypervisorNodeGetCellsFreeMemory(virConnectPtr conn, unsigned long long *free
xenUnifiedPrivatePtr priv; xenUnifiedPrivatePtr priv;
if (conn == NULL) { if (conn == NULL) {
virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, virXenError(VIR_ERR_INVALID_ARG, "%s", _("invalid argument"));
"invalid argument", 0);
return -1; return -1;
} }
priv = conn->privateData; priv = conn->privateData;
if (priv->nbNodeCells < 0) { if (priv->nbNodeCells < 0) {
virXenErrorFunc(VIR_ERR_XEN_CALL, __FUNCTION__, virXenError(VIR_ERR_XEN_CALL, "%s",
"cannot determine actual number of cells",0); _("cannot determine actual number of cells"));
return(-1); return(-1);
} }
if ((maxCells < 1) || (startCell >= priv->nbNodeCells)) { if ((maxCells < 1) || (startCell >= priv->nbNodeCells)) {
virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, virXenError(VIR_ERR_INVALID_ARG, "%s",
"invalid argument", 0); _("invalid argument"));
return -1; return -1;
} }
@ -3398,14 +3366,14 @@ xenHypervisorNodeGetCellsFreeMemory(virConnectPtr conn, unsigned long long *free
* Support only hv_versions.sys_interface >=4 * Support only hv_versions.sys_interface >=4
*/ */
if (hv_versions.sys_interface < SYS_IFACE_MIN_VERS_NUMA) { if (hv_versions.sys_interface < SYS_IFACE_MIN_VERS_NUMA) {
virXenErrorFunc(VIR_ERR_XEN_CALL, __FUNCTION__, virXenError(VIR_ERR_XEN_CALL, "%s",
"unsupported in sys interface < 4", 0); _("unsupported in sys interface < 4"));
return -1; return -1;
} }
if (priv->handle < 0) { if (priv->handle < 0) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
"priv->handle invalid", 0); _("priv->handle invalid"));
return -1; return -1;
} }
@ -3646,13 +3614,13 @@ xenHypervisorGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo,
if (priv->handle < 0 || (domain->id < 0) || if (priv->handle < 0 || (domain->id < 0) ||
(info == NULL) || (maxinfo < 1) || (info == NULL) || (maxinfo < 1) ||
(sizeof(cpumap_t) & 7)) { (sizeof(cpumap_t) & 7)) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
_("domain shut off or invalid"), 0); _("domain shut off or invalid"));
return (-1); return (-1);
} }
if ((cpumaps != NULL) && (maplen < 1)) { if ((cpumaps != NULL) && (maplen < 1)) {
virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, virXenError(VIR_ERR_INVALID_ARG, "%s",
"invalid argument", 0); _("invalid argument"));
return -1; return -1;
} }
/* first get the number of virtual CPUs in this domain */ /* first get the number of virtual CPUs in this domain */
@ -3661,8 +3629,8 @@ xenHypervisorGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo,
&dominfo); &dominfo);
if ((ret < 0) || (XEN_GETDOMAININFO_DOMAIN(dominfo) != domain->id)) { if ((ret < 0) || (XEN_GETDOMAININFO_DOMAIN(dominfo) != domain->id)) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
_("cannot get domain details"), 0); _("cannot get domain details"));
return (-1); return (-1);
} }
nbinfo = XEN_GETDOMAININFO_CPUCOUNT(dominfo) + 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), (unsigned char *)VIR_GET_CPUMAP(cpumaps, maplen, i),
maplen); maplen);
if (ret < 0) { if (ret < 0) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
_("cannot get VCPUs info"), 0); _("cannot get VCPUs info"));
return(-1); return(-1);
} }
} else { } else {
ret = virXen_getvcpusinfo(priv->handle, domain->id, i, ret = virXen_getvcpusinfo(priv->handle, domain->id, i,
ipt, NULL, 0); ipt, NULL, 0);
if (ret < 0) { if (ret < 0) {
virXenErrorFunc(VIR_ERR_INTERNAL_ERROR, __FUNCTION__, virXenError(VIR_ERR_INTERNAL_ERROR, "%s",
_("cannot get VCPUs info"), 0); _("cannot get VCPUs info"));
return(-1); return(-1);
} }
} }