[libvirt PATCH v5 2/6] conf: switch to virXMLProp* functions for parsing video
Peter Krempa
pkrempa at redhat.com
Tue Nov 8 19:05:33 UTC 2022
On Tue, Nov 08, 2022 at 12:04:49 -0600, Jonathon Jongsma wrote:
> On 11/7/22 1:45 AM, Ján Tomko wrote:
> > On a Friday in 2022, Jonathon Jongsma wrote:
> > > In virDomainVideoModelDefParseXML(), use the virXMLProp* functions
> > > rather than reimplementing them with virXPath* functions.
> > >
> > > Signed-off-by: Jonathon Jongsma <jjongsma at redhat.com>
> > > ---
> > > src/conf/domain_conf.c | 78 +++++++++++++-----------------------------
> > > 1 file changed, 23 insertions(+), 55 deletions(-)
> > >
> > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> > > index 2e153db94f..552936c8b7 100644
> > > --- a/src/conf/domain_conf.c
> > > +++ b/src/conf/domain_conf.c
> > > - if ((heads = virXPathString("string(./@heads)", ctxt))) {
> > > - if (virStrToLong_uip(heads, NULL, 10, &def->heads) < 0) {
> > > - virReportError(VIR_ERR_INTERNAL_ERROR,
> > > - _("cannot parse video heads '%s'"), heads);
> > > - return -1;
> > > - }
> > > - }
> > > + if ((rc = virXMLPropUInt(node, "heads", 10, VIR_XML_PROP_NONE,
> > > &def->heads)) < 0)
> > > + return -1;
> >
> > > + else if (rc == 0)
> > > + def->heads = 1;
> >
> > This branch is not necessary - just like the previous code, def->heads
> > is untouched if the attribute is not present.
>
> This is unfortunately not true. virXMLPropUInt() actually sets *result = 0
> at the very beginning of the function. So this branch is necessary unless we
> change the implementation of virXMLPropUInt().
Changing the impl is out of question, but you can factor out the
implementation and provide a version which sets the default value to
something else than 0. We have these for signed integer parsing helpers
and for enums as virXMLPropEnumDefault.
More information about the libvir-list
mailing list