[libvirt] [PATCH 04/24] maint: improve error condition style in public API
Eric Blake
eblake at redhat.com
Fri Jan 3 14:16:54 UTC 2014
On 01/02/2014 11:16 AM, John Ferlan wrote:
>
>
> On 12/28/2013 11:11 AM, Eric Blake wrote:
>> While auditing error messages in libvirt.c, I found a couple
>> instances that had not been converted to modern error styles,
>> and a few places that failed to dispatch the error through
>> the known-good connection.
>>
>> * src/libvirt.c (virDomainPinEmulator, virDomainGetDiskErrors)
>> (virDomainSendKey, virDomainGetSecurityLabelList)
>> (virDomainGetEmulatorPinInfo): Use typical error reporting.
>> (virConnectGetCPUModelNames, virConnectRegisterCloseCallback)
>> (virConnectUnregisterCloseCallback, virDomainGetUUID): Report
>> error through connection.
>>
>> Signed-off-by: Eric Blake <eblake at redhat.com>
>> ---
>> src/libvirt.c | 54 ++++++++++++++++++++++++++++--------------------------
>> 1 file changed, 28 insertions(+), 26 deletions(-)
>>
>> virResetLastError();
>>
>> - if (keycodes == NULL ||
>> - nkeycodes <= 0 || nkeycodes > VIR_DOMAIN_SEND_KEY_MAX_KEYS) {
>> - virLibDomainError(VIR_ERR_OPERATION_INVALID, __FUNCTION__);
>> - virDispatchError(NULL);
>> - return -1;
>> + virCheckNonNullArgGoto(keycodes, error);
>> + virCheckPositiveArgGoto(nkeycodes, error);
>> +
>> + if (nkeycodes > VIR_DOMAIN_SEND_KEY_MAX_KEYS) {
>> + virReportInvalidArg(nkeycodes,
>> + _("nkeycodes in %s must be less than %d"),
>
> technically...
>
> less than or equal to ...
Indeed.
>
>
>> + __FUNCTION__, VIR_DOMAIN_SEND_KEY_MAX_KEYS);
>> + goto error;
>> }
>
> I think the above code may need to move after the next two domain checks
> (although looking forward, I realize it may be irrelevant)...
>
> If domain is NULL at the goto error above, then the domain->conn deref
> in error: will cause more havoc.
Yes, I ended up fixing it later in the series; but you have a point
about bisectability not introducing known temporary bugs. I'll hoist
that fix into this patch.
>> + virReportInvalidArg(flags,
>> + _("flags 'affect live' and 'affect config' in %s are mutually exclusive"),
>> + __FUNCTION__);
>
> The new error message is longer than 80 columns.. split across multiple
> lines.
Copied and pasted from elsewhere, but as that is a style issue, fixing
all such instances is still within the bounds of this patch.
>
> ACK with nits.
Here's what I squashed in before pushing...
On second thought, it makes the content changes harder to find, so I
resplit this patch and did the line wrapping in its own patch, then
pushed both patches (line wrapping under the trivial rule). Pushed.
diff --git i/src/libvirt.c w/src/libvirt.c
index 33538f4..c259d2f 100644
--- i/src/libvirt.c
+++ w/src/libvirt.c
@@ -2831,7 +2831,8 @@ virDomainSaveFlags(virDomainPtr domain, const char
*to,
if ((flags & VIR_DOMAIN_SAVE_RUNNING) && (flags &
VIR_DOMAIN_SAVE_PAUSED)) {
virReportInvalidArg(flags, "%s",
- _("running and paused flags are mutually
exclusive"));
+ _("running and paused flags are mutually "
+ "exclusive"));
goto error;
}
@@ -2971,7 +2972,8 @@ virDomainRestoreFlags(virConnectPtr conn, const
char *from, const char *dxml,
if ((flags & VIR_DOMAIN_SAVE_RUNNING) && (flags &
VIR_DOMAIN_SAVE_PAUSED)) {
virReportInvalidArg(flags, "%s",
- _("running and paused flags are mutually
exclusive"));
+ _("running and paused flags are mutually "
+ "exclusive"));
goto error;
}
@@ -3122,7 +3124,8 @@ virDomainSaveImageDefineXML(virConnectPtr conn,
const char *file,
if ((flags & VIR_DOMAIN_SAVE_RUNNING) && (flags &
VIR_DOMAIN_SAVE_PAUSED)) {
virReportInvalidArg(flags, "%s",
- _("running and paused flags are mutually
exclusive"));
+ _("running and paused flags are mutually "
+ "exclusive"));
goto error;
}
@@ -4163,7 +4166,8 @@ virDomainGetMemoryParameters(virDomainPtr domain,
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
virReportInvalidArg(flags,
- _("flags 'affect live' and 'affect config'
in %s are mutually exclusive"),
+ _("flags 'affect live' and 'affect config'
in %s "
+ "are mutually exclusive"),
__FUNCTION__);
goto error;
}
@@ -4428,7 +4432,8 @@ virDomainGetBlkioParameters(virDomainPtr domain,
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
virReportInvalidArg(flags,
- _("flags 'affect live' and 'affect config'
in %s are mutually exclusive"),
+ _("flags 'affect live' and 'affect config'
in %s "
+ "are mutually exclusive"),
__FUNCTION__);
goto error;
}
@@ -7738,7 +7743,8 @@ virNodeGetCPUStats(virConnectPtr conn,
virCheckNonNegativeArgGoto(*nparams, error);
if (cpuNum < 0 && cpuNum != VIR_NODE_CPU_STATS_ALL_CPUS) {
virReportInvalidArg(cpuNum,
- _("cpuNum in %s only accepts %d as a
negative value"),
+ _("cpuNum in %s only accepts %d as a negative "
+ "value"),
__FUNCTION__, VIR_NODE_CPU_STATS_ALL_CPUS);
goto error;
}
@@ -7829,7 +7835,8 @@ virNodeGetMemoryStats(virConnectPtr conn,
virCheckNonNegativeArgGoto(*nparams, error);
if (cellNum < 0 && cellNum != VIR_NODE_MEMORY_STATS_ALL_CELLS) {
virReportInvalidArg(cpuNum,
- _("cellNum in %s only accepts %d as a
negative value"),
+ _("cellNum in %s only accepts %d as a
negative "
+ "value"),
__FUNCTION__, VIR_NODE_MEMORY_STATS_ALL_CELLS);
goto error;
}
@@ -8241,7 +8248,8 @@ virDomainGetSchedulerParametersFlags(virDomainPtr
domain,
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
virReportInvalidArg(flags,
- _("flags 'affect live' and 'affect config'
in %s are mutually exclusive"),
+ _("flags 'affect live' and 'affect config'
in %s "
+ "are mutually exclusive"),
__FUNCTION__);
goto error;
}
@@ -9070,7 +9078,8 @@ virDomainMemoryPeek(virDomainPtr dom,
/* Exactly one of these two flags must be set. */
if (!(flags & VIR_MEMORY_VIRTUAL) == !(flags & VIR_MEMORY_PHYSICAL)) {
virReportInvalidArg(flags,
- _("flags in %s must include
VIR_MEMORY_VIRTUAL or VIR_MEMORY_PHYSICAL"),
+ _("flags in %s must include
VIR_MEMORY_VIRTUAL or "
+ "VIR_MEMORY_PHYSICAL"),
__FUNCTION__);
goto error;
}
@@ -9877,21 +9886,22 @@ virDomainSendKey(virDomainPtr domain,
virResetLastError();
+ if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
+ virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
+ virDispatchError(NULL);
+ return -1;
+ }
+
virCheckNonNullArgGoto(keycodes, error);
virCheckPositiveArgGoto(nkeycodes, error);
if (nkeycodes > VIR_DOMAIN_SEND_KEY_MAX_KEYS) {
virReportInvalidArg(nkeycodes,
- _("nkeycodes in %s must be less than %d"),
+ _("nkeycodes in %s must be <= %d"),
__FUNCTION__, VIR_DOMAIN_SEND_KEY_MAX_KEYS);
goto error;
}
- if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
- virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
if (domain->conn->flags & VIR_CONNECT_RO) {
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
@@ -10414,7 +10424,8 @@ virDomainGetVcpuPinInfo(virDomainPtr domain, int
ncpumaps,
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
virReportInvalidArg(flags,
- _("flags 'affect live' and 'affect config'
in %s are mutually exclusive"),
+ _("flags 'affect live' and 'affect config'
in %s "
+ "are mutually exclusive"),
__FUNCTION__);
goto error;
}
@@ -10556,7 +10567,8 @@ virDomainGetEmulatorPinInfo(virDomainPtr domain,
unsigned char *cpumap,
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
virReportInvalidArg(flags,
- _("flags 'affect live' and 'affect config'
in %s are mutually exclusive"),
+ _("flags 'affect live' and 'affect config'
in %s "
+ "are mutually exclusive"),
__FUNCTION__);
goto error;
}
@@ -10850,7 +10862,8 @@ virDomainSetMetadata(virDomainPtr domain,
case VIR_DOMAIN_METADATA_TITLE:
if (metadata && strchr(metadata, '\n')) {
virReportInvalidArg(metadata,
- _("metadata title in %s can't contain
newlines"),
+ _("metadata title in %s can't contain "
+ "newlines"),
__FUNCTION__);
goto error;
}
@@ -10928,7 +10941,8 @@ virDomainGetMetadata(virDomainPtr domain,
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
virReportInvalidArg(flags,
- _("flags 'affect live' and 'affect config'
in %s are mutually exclusive"),
+ _("flags 'affect live' and 'affect config'
in %s "
+ "are mutually exclusive"),
__FUNCTION__);
goto error;
}
@@ -15464,7 +15478,8 @@ virStorageVolResize(virStorageVolPtr vol,
if (capacity == 0 && !((flags & VIR_STORAGE_VOL_RESIZE_DELTA) ||
(flags & VIR_STORAGE_VOL_RESIZE_SHRINK))) {
virReportInvalidArg(capacity,
- _("capacity in %s cannot be zero without
'delta' or 'shrink' flags set"),
+ _("capacity in %s cannot be zero without
'delta' "
+ "or 'shrink' flags set"),
__FUNCTION__);
goto error;
}
@@ -19610,7 +19625,8 @@ virDomainManagedSave(virDomainPtr dom, unsigned
int flags)
if ((flags & VIR_DOMAIN_SAVE_RUNNING) && (flags &
VIR_DOMAIN_SAVE_PAUSED)) {
virReportInvalidArg(flags,
- _("running and paused flags in %s are
mutually exclusive"),
+ _("running and paused flags in %s are
mutually "
+ "exclusive"),
__FUNCTION__);
goto error;
}
@@ -19937,21 +19953,24 @@ virDomainSnapshotCreateXML(virDomainPtr domain,
if ((flags & VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT) &&
!(flags & VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE)) {
virReportInvalidArg(flags,
- _("use of 'current' flag in %s requires
'redefine' flag"),
+ _("use of 'current' flag in %s requires "
+ "'redefine' flag"),
__FUNCTION__);
goto error;
}
if ((flags & VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE) &&
(flags & VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA)) {
virReportInvalidArg(flags,
- _("'redefine' and 'no metadata' flags in %s
are mutually exclusive"),
+ _("'redefine' and 'no metadata' flags in %s
are "
+ "mutually exclusive"),
__FUNCTION__);
goto error;
}
if ((flags & VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE) &&
(flags & VIR_DOMAIN_SNAPSHOT_CREATE_HALT)) {
virReportInvalidArg(flags,
- _("'redefine' and 'halt' flags in %s are
mutually exclusive"),
+ _("'redefine' and 'halt' flags in %s are
mutually "
+ "exclusive"),
__FUNCTION__);
goto error;
}
@@ -20868,7 +20887,8 @@ virDomainRevertToSnapshot(virDomainSnapshotPtr
snapshot,
if ((flags & VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING) &&
(flags & VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED)) {
virReportInvalidArg(flags,
- _("running and paused flags in %s are
mutually exclusive"),
+ _("running and paused flags in %s are
mutually "
+ "exclusive"),
__FUNCTION__);
goto error;
}
@@ -22110,7 +22130,8 @@ virDomainGetBlockIoTune(virDomainPtr dom,
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
virReportInvalidArg(flags,
- _("flags 'affect live' and 'affect config'
in %s are mutually exclusive"),
+ _("flags 'affect live' and 'affect config'
in %s "
+ "are mutually exclusive"),
__FUNCTION__);
goto error;
}
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 604 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140103/cb059117/attachment-0001.sig>
More information about the libvir-list
mailing list