On Mon, Apr 24, 2017 at 02:00:18PM -0400, John Ferlan wrote: > Rather than overloading one function - split apart the logic to have > separate interfaces and local/private structures to manage the data > for which the helper is collecting. > > Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx> > --- > src/conf/virsecretobj.c | 98 +++++++++++++++++++++++++++++++------------------ > src/conf/virsecretobj.h | 6 +-- > 2 files changed, 65 insertions(+), 39 deletions(-) > > diff --git a/src/conf/virsecretobj.c b/src/conf/virsecretobj.c > index c410a6b..3717552 100644 > --- a/src/conf/virsecretobj.c > +++ b/src/conf/virsecretobj.c > @@ -415,9 +415,54 @@ virSecretObjListAdd(virSecretObjListPtr secrets, > } > > > -struct virSecretObjListGetHelperData { > +struct secretCountData { This doesn't follow our naming rules, all struct should be prefixed with *vir*. > virConnectPtr conn; > - virSecretObjListACLFilter filter; > + virSecretObjListACLFilter aclfilter; > + int count; > +}; > + > +static int > +virSecretObjListNumOfSecretsCallback(void *payload, > + const void *name ATTRIBUTE_UNUSED, > + void *opaque) > +{ > + struct secretCountData *data = opaque; > + virSecretObjPtr obj = payload; > + virSecretDefPtr def; > + > + virObjectLock(obj); > + def = obj->def; > + > + if (data->aclfilter && !data->aclfilter(data->conn, def)) > + goto cleanup; This follows previous patch, in this case having separate variable for virSecretDefPtr doesn't give us any benefit, just a noise in the code. > + > + data->count++; > + > + cleanup: > + virObjectUnlock(obj); > + return 0; > +} > + > + > +int > +virSecretObjListNumOfSecrets(virSecretObjListPtr secrets, > + virSecretObjListACLFilter aclfilter, > + virConnectPtr conn) > +{ > + struct secretCountData data = { > + .conn = conn, .aclfilter = aclfilter, .count = 0 }; > + > + virObjectLock(secrets); > + virHashForEach(secrets->objs, virSecretObjListNumOfSecretsCallback, &data); > + virObjectUnlock(secrets); > + > + return data.count; > +} Unnecessary movement of function. > + > + > +struct secretListData { This should be virSecretListData. > + virConnectPtr conn; > + virSecretObjListACLFilter aclfilter; > int nuuids; > char **uuids; > int maxuuids; Pavel
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list