mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-06 11:49:29 +00:00
virDomainObjGetMessages: Refactor using GPtrArray
Simplify the function especially by rewriting it using GPtrArray to construct the string list, especially for the upcoming case when the number of added elements will not be known beforehand and when hypervisor specific data will be added. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
042ea8630b
commit
1a02760cc6
@ -31685,53 +31685,31 @@ virHostdevIsPCIDevice(const virDomainHostdevDef *hostdev)
|
|||||||
/**
|
/**
|
||||||
* virDomainObjGetMessages:
|
* virDomainObjGetMessages:
|
||||||
* @vm: domain object
|
* @vm: domain object
|
||||||
* @msgs: pointer to a variable to store messages
|
* @m: GPtrArray to be filled with messages
|
||||||
* @flags: zero or more virDomainMessageType flags
|
* @flags: zero or more virDomainMessageType flags
|
||||||
*
|
|
||||||
* Returns number of messages stored in @msgs, -1 otherwise.
|
|
||||||
*/
|
*/
|
||||||
int
|
void
|
||||||
virDomainObjGetMessages(virDomainObj *vm,
|
virDomainObjGetMessages(virDomainObj *vm,
|
||||||
char ***msgs,
|
GPtrArray *m,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
size_t n = 0;
|
|
||||||
int nmsgs = 0;
|
|
||||||
int rv = -1;
|
|
||||||
|
|
||||||
*msgs = NULL;
|
|
||||||
|
|
||||||
if (!flags || (flags & VIR_DOMAIN_MESSAGE_TAINTING)) {
|
if (!flags || (flags & VIR_DOMAIN_MESSAGE_TAINTING)) {
|
||||||
nmsgs += __builtin_popcount(vm->taint);
|
|
||||||
*msgs = g_renew(char *, *msgs, nmsgs+1);
|
|
||||||
|
|
||||||
for (i = 0; i < VIR_DOMAIN_TAINT_LAST; i++) {
|
for (i = 0; i < VIR_DOMAIN_TAINT_LAST; i++) {
|
||||||
if (vm->taint & (1 << i)) {
|
if (vm->taint & (1 << i)) {
|
||||||
(*msgs)[n++] = g_strdup_printf(
|
g_ptr_array_add(m, g_strdup_printf(_("tainted: %1$s"),
|
||||||
_("tainted: %1$s"),
|
_(virDomainTaintMessageTypeToString(i))));
|
||||||
_(virDomainTaintMessageTypeToString(i)));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!flags || (flags & VIR_DOMAIN_MESSAGE_DEPRECATION)) {
|
if (!flags || (flags & VIR_DOMAIN_MESSAGE_DEPRECATION)) {
|
||||||
nmsgs += vm->ndeprecations;
|
|
||||||
*msgs = g_renew(char *, *msgs, nmsgs+1);
|
|
||||||
|
|
||||||
for (i = 0; i < vm->ndeprecations; i++) {
|
for (i = 0; i < vm->ndeprecations; i++) {
|
||||||
(*msgs)[n++] = g_strdup_printf(
|
g_ptr_array_add(m, g_strdup_printf(_("deprecated configuration: %1$s"),
|
||||||
_("deprecated configuration: %1$s"),
|
vm->deprecations[i]));
|
||||||
vm->deprecations[i]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*msgs)
|
|
||||||
(*msgs)[nmsgs] = NULL;
|
|
||||||
|
|
||||||
rv = nmsgs;
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -4588,9 +4588,9 @@ bool
|
|||||||
virHostdevIsPCIDevice(const virDomainHostdevDef *hostdev)
|
virHostdevIsPCIDevice(const virDomainHostdevDef *hostdev)
|
||||||
ATTRIBUTE_NONNULL(1);
|
ATTRIBUTE_NONNULL(1);
|
||||||
|
|
||||||
int
|
void
|
||||||
virDomainObjGetMessages(virDomainObj *vm,
|
virDomainObjGetMessages(virDomainObj *vm,
|
||||||
char ***msgs,
|
GPtrArray *m,
|
||||||
unsigned int flags);
|
unsigned int flags);
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -6575,6 +6575,7 @@ libxlDomainGetMessages(virDomainPtr dom,
|
|||||||
char ***msgs,
|
char ***msgs,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
|
g_autoptr(GPtrArray) m = g_ptr_array_new_with_free_func(g_free);
|
||||||
virDomainObj *vm = NULL;
|
virDomainObj *vm = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
@ -6587,7 +6588,13 @@ libxlDomainGetMessages(virDomainPtr dom,
|
|||||||
if (virDomainGetMessagesEnsureACL(dom->conn, vm->def) < 0)
|
if (virDomainGetMessagesEnsureACL(dom->conn, vm->def) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
ret = virDomainObjGetMessages(vm, msgs, flags);
|
virDomainObjGetMessages(vm, m, flags);
|
||||||
|
|
||||||
|
ret = m->len;
|
||||||
|
if (m->len > 0) {
|
||||||
|
g_ptr_array_add(m, NULL);
|
||||||
|
*msgs = (char **) g_ptr_array_steal(m, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virDomainObjEndAPI(&vm);
|
virDomainObjEndAPI(&vm);
|
||||||
|
@ -19834,6 +19834,7 @@ qemuDomainGetMessages(virDomainPtr dom,
|
|||||||
char ***msgs,
|
char ***msgs,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
|
g_autoptr(GPtrArray) m = g_ptr_array_new_with_free_func(g_free);
|
||||||
virDomainObj *vm = NULL;
|
virDomainObj *vm = NULL;
|
||||||
int rv = -1;
|
int rv = -1;
|
||||||
|
|
||||||
@ -19846,7 +19847,13 @@ qemuDomainGetMessages(virDomainPtr dom,
|
|||||||
if (virDomainGetMessagesEnsureACL(dom->conn, vm->def) < 0)
|
if (virDomainGetMessagesEnsureACL(dom->conn, vm->def) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
rv = virDomainObjGetMessages(vm, msgs, flags);
|
virDomainObjGetMessages(vm, m, flags);
|
||||||
|
|
||||||
|
rv = m->len;
|
||||||
|
if (m->len > 0) {
|
||||||
|
g_ptr_array_add(m, NULL);
|
||||||
|
*msgs = (char **) g_ptr_array_steal(m, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virDomainObjEndAPI(&vm);
|
virDomainObjEndAPI(&vm);
|
||||||
|
@ -9522,6 +9522,7 @@ testDomainGetMessages(virDomainPtr dom,
|
|||||||
char ***msgs,
|
char ***msgs,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
|
g_autoptr(GPtrArray) m = g_ptr_array_new_with_free_func(g_free);
|
||||||
virDomainObj *vm = NULL;
|
virDomainObj *vm = NULL;
|
||||||
int rv = -1;
|
int rv = -1;
|
||||||
|
|
||||||
@ -9531,7 +9532,13 @@ testDomainGetMessages(virDomainPtr dom,
|
|||||||
if (!(vm = testDomObjFromDomain(dom)))
|
if (!(vm = testDomObjFromDomain(dom)))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
rv = virDomainObjGetMessages(vm, msgs, flags);
|
virDomainObjGetMessages(vm, m, flags);
|
||||||
|
|
||||||
|
rv = m->len;
|
||||||
|
if (m->len > 0) {
|
||||||
|
g_ptr_array_add(m, NULL);
|
||||||
|
*msgs = (char **) g_ptr_array_steal(m, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
virDomainObjEndAPI(&vm);
|
virDomainObjEndAPI(&vm);
|
||||||
return rv;
|
return rv;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user