>On Wed, Jun 10, 2020 at 09:20:36AM +0800, Shi Lei wrote: >> Signed-off-by: Shi Lei <shi_lei@xxxxxxxxxxxxxx> >> --- >> src/conf/network_conf.c | 4 ++-- >> src/conf/network_conf.h | 2 +- >> 2 files changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c >> index 964a8a7..b807bac 100644 >> --- a/src/conf/network_conf.c >> +++ b/src/conf/network_conf.c >> @@ -2280,8 +2280,8 @@ virNetworkDNSDefFormat(virBufferPtr buf, >> } >> >> for (i = 0; i < def->ntxts; i++) { >> - virBufferEscapeString(buf, "<txt name='%s' ", def->txts[i].name); >> - virBufferEscapeString(buf, "value='%s'/>\n", def->txts[i].value); >> + if (virNetworkDNSTxtDefFormatBuf(buf, "txt", &def->txts[i], NULL) < 0) >> + return -1; >> } > >For sake of review, the new code looks like this: > >int >virNetworkDNSTxtDefFormatBuf(virBufferPtr buf, > const char *name, > const virNetworkDNSTxtDef *def, > void *opaque) >{ > VIR_USED(opaque); > > if (!def) > return 0; > > if (!(def->name || def->value)) > return 0; > > virBufferAsprintf(buf, "<%s", name); > > if (def->name) > virBufferAsprintf(buf, " name='%s'", def->name); > > if (def->value) > virBufferAsprintf(buf, " value='%s'", def->value); > > virBufferAddLit(buf, "/>\n"); > > return 0; >} > >This is a lot longer, but obviously the code is more general >purpose. > >I'm not sure why we need to pass "txt" into this method though. >Can't we just hardcode "<txt" instead of formatting "<%s", name ? > The format function is generated based on Struct. A struct doesn't hold element name. Only a member can hold element/attribute name. So this name should be passed into format function as a argument. E.g., virNetworkDNSTxtDefFormatBuf is generated based on virNetworkDNSTxtDef, and 'txt' is specified by the member txts of virNetworkDNSDef. And also, if there're two members which have the same struct-type, they can reuse a unique format function and pass different tag names into it. Regards, Shi Lei > >Regards, >Daniel >-- >|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| >|: https://libvirt.org -o- https://fstop138.berrange.com :| >|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| >