[libvirt PATCH 00/10] Refactor more XML parsing boilerplate code, part IV

For background, see https://listman.redhat.com/archives/libvir-list/2021-April/msg00668.html Tim Wiederhake (10): virDomainDiskDef: Change type of cachemode to virDomainDiskCache virDomainDiskDef: Change type of error_policy to virDomainDiskErrorPolicy virDomainDiskDef: Change type of rerror_policy to virDomainDiskErrorPolicy virDomainDiskDef: Change type of iomode to virDomainDiskInfo virDomainDiskDef: Change type of discard to virDomainDiskDiscard virDomainDiskDef: Change type of detect_zeroes to virDomainDiskDetectZeroes virDomainDiskDefDriverParseXML: Use virXMLProp* domain_conf: Introduce function virDomainChrSouceModeTypeFromString domain_conf: Remove function virDomainChrSourceDefParseMode virDomainChrSourceDefParseTCP: Use virXMLProp* src/conf/domain_conf.c | 176 +++++++++++++---------------------------- src/conf/domain_conf.h | 12 +-- 2 files changed, 61 insertions(+), 127 deletions(-) -- 2.26.3

Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/conf/domain_conf.c | 14 +++++++++----- src/conf/domain_conf.h | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 720d56cf69..33c6412642 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -8964,11 +8964,15 @@ virDomainDiskDefDriverParseXML(virDomainDiskDef *def, def->driverName = virXMLPropString(cur, "name"); - if ((tmp = virXMLPropString(cur, "cache")) && - (def->cachemode = virDomainDiskCacheTypeFromString(tmp)) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk cache mode '%s'"), tmp); - return -1; + if ((tmp = virXMLPropString(cur, "cache"))) { + int cachemode; + + if ((cachemode = virDomainDiskCacheTypeFromString(tmp)) < 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unknown disk cache mode '%s'"), tmp); + return -1; + } + def->cachemode = cachemode; } VIR_FREE(tmp); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index fab7a0208e..3675e26eb0 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -566,7 +566,7 @@ struct _virDomainDiskDef { char *wwn; char *vendor; char *product; - int cachemode; /* enum virDomainDiskCache */ + virDomainDiskCache cachemode; int error_policy; /* enum virDomainDiskErrorPolicy */ int rerror_policy; /* enum virDomainDiskErrorPolicy */ int iomode; /* enum virDomainDiskIo */ -- 2.26.3

Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/conf/domain_conf.c | 14 +++++++++----- src/conf/domain_conf.h | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 33c6412642..4a0358831b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -8976,11 +8976,15 @@ virDomainDiskDefDriverParseXML(virDomainDiskDef *def, } VIR_FREE(tmp); - if ((tmp = virXMLPropString(cur, "error_policy")) && - (def->error_policy = virDomainDiskErrorPolicyTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk error policy '%s'"), tmp); - return -1; + if ((tmp = virXMLPropString(cur, "error_policy"))) { + int error_policy; + + if ((error_policy = virDomainDiskErrorPolicyTypeFromString(tmp)) <= 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unknown disk error policy '%s'"), tmp); + return -1; + } + def->error_policy = error_policy; } VIR_FREE(tmp); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 3675e26eb0..cacb9d0430 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -567,7 +567,7 @@ struct _virDomainDiskDef { char *vendor; char *product; virDomainDiskCache cachemode; - int error_policy; /* enum virDomainDiskErrorPolicy */ + virDomainDiskErrorPolicy error_policy; int rerror_policy; /* enum virDomainDiskErrorPolicy */ int iomode; /* enum virDomainDiskIo */ virTristateSwitch ioeventfd; -- 2.26.3

Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/conf/domain_conf.c | 16 ++++++++++------ src/conf/domain_conf.h | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 4a0358831b..0b12ec61f9 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -8988,12 +8988,16 @@ virDomainDiskDefDriverParseXML(virDomainDiskDef *def, } VIR_FREE(tmp); - if ((tmp = virXMLPropString(cur, "rerror_policy")) && - (((def->rerror_policy = virDomainDiskErrorPolicyTypeFromString(tmp)) <= 0) || - (def->rerror_policy == VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE))) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk read error policy '%s'"), tmp); - return -1; + if ((tmp = virXMLPropString(cur, "rerror_policy"))) { + int rerror_policy; + + if (((rerror_policy = virDomainDiskErrorPolicyTypeFromString(tmp)) <= 0) || + (rerror_policy == VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unknown disk read error policy '%s'"), tmp); + return -1; + } + def->rerror_policy = rerror_policy; } VIR_FREE(tmp); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index cacb9d0430..d808f5b260 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -568,7 +568,7 @@ struct _virDomainDiskDef { char *product; virDomainDiskCache cachemode; virDomainDiskErrorPolicy error_policy; - int rerror_policy; /* enum virDomainDiskErrorPolicy */ + virDomainDiskErrorPolicy rerror_policy; int iomode; /* enum virDomainDiskIo */ virTristateSwitch ioeventfd; virTristateSwitch event_idx; -- 2.26.3

Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/conf/domain_conf.c | 14 +++++++++----- src/conf/domain_conf.h | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 0b12ec61f9..72664bd72b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -9001,11 +9001,15 @@ virDomainDiskDefDriverParseXML(virDomainDiskDef *def, } VIR_FREE(tmp); - if ((tmp = virXMLPropString(cur, "io")) && - (def->iomode = virDomainDiskIoTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk io mode '%s'"), tmp); - return -1; + if ((tmp = virXMLPropString(cur, "io"))) { + int iomode; + + if ((iomode = virDomainDiskIoTypeFromString(tmp)) <= 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unknown disk io mode '%s'"), tmp); + return -1; + } + def->iomode = iomode; } VIR_FREE(tmp); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index d808f5b260..3402b3f85a 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -569,7 +569,7 @@ struct _virDomainDiskDef { virDomainDiskCache cachemode; virDomainDiskErrorPolicy error_policy; virDomainDiskErrorPolicy rerror_policy; - int iomode; /* enum virDomainDiskIo */ + virDomainDiskIo iomode; virTristateSwitch ioeventfd; virTristateSwitch event_idx; virTristateSwitch copy_on_read; -- 2.26.3

Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/conf/domain_conf.c | 14 +++++++++----- src/conf/domain_conf.h | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 72664bd72b..9a4252099e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -9046,11 +9046,15 @@ virDomainDiskDefDriverParseXML(virDomainDiskDef *def, } VIR_FREE(tmp); - if ((tmp = virXMLPropString(cur, "discard")) && - (def->discard = virDomainDiskDiscardTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk discard mode '%s'"), tmp); - return -1; + if ((tmp = virXMLPropString(cur, "discard"))) { + int discard; + + if ((discard = virDomainDiskDiscardTypeFromString(tmp)) <= 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unknown disk discard mode '%s'"), tmp); + return -1; + } + def->discard = discard; } VIR_FREE(tmp); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 3402b3f85a..eb4991a312 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -579,7 +579,7 @@ struct _virDomainDiskDef { virDomainDeviceInfo info; virTristateBool rawio; virDomainDeviceSGIO sgio; - int discard; /* enum virDomainDiskDiscard */ + virDomainDiskDiscard discard; unsigned int iothread; /* unused = 0, > 0 specific thread # */ int detect_zeroes; /* enum virDomainDiskDetectZeroes */ char *domain_name; /* backend domain name */ -- 2.26.3

Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/conf/domain_conf.c | 14 +++++++++----- src/conf/domain_conf.h | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 9a4252099e..60f961c2b9 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -9083,11 +9083,15 @@ virDomainDiskDefDriverParseXML(virDomainDiskDef *def, VIR_FREE(tmp); } - if ((tmp = virXMLPropString(cur, "detect_zeroes")) && - (def->detect_zeroes = virDomainDiskDetectZeroesTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown driver detect_zeroes value '%s'"), tmp); - return -1; + if ((tmp = virXMLPropString(cur, "detect_zeroes"))) { + int detect_zeroes; + + if ((detect_zeroes = virDomainDiskDetectZeroesTypeFromString(tmp)) <= 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unknown driver detect_zeroes value '%s'"), tmp); + return -1; + } + def->detect_zeroes = detect_zeroes; } VIR_FREE(tmp); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index eb4991a312..a7cad31896 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -581,7 +581,7 @@ struct _virDomainDiskDef { virDomainDeviceSGIO sgio; virDomainDiskDiscard discard; unsigned int iothread; /* unused = 0, > 0 specific thread # */ - int detect_zeroes; /* enum virDomainDiskDetectZeroes */ + virDomainDiskDetectZeroes detect_zeroes; char *domain_name; /* backend domain name */ unsigned int queues; virDomainDiskModel model; -- 2.26.3

Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/conf/domain_conf.c | 150 +++++++++++------------------------------ 1 file changed, 39 insertions(+), 111 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 60f961c2b9..1bbf907596 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -8964,109 +8964,51 @@ virDomainDiskDefDriverParseXML(virDomainDiskDef *def, def->driverName = virXMLPropString(cur, "name"); - if ((tmp = virXMLPropString(cur, "cache"))) { - int cachemode; - - if ((cachemode = virDomainDiskCacheTypeFromString(tmp)) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk cache mode '%s'"), tmp); - return -1; - } - def->cachemode = cachemode; - } - VIR_FREE(tmp); - - if ((tmp = virXMLPropString(cur, "error_policy"))) { - int error_policy; - - if ((error_policy = virDomainDiskErrorPolicyTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk error policy '%s'"), tmp); - return -1; - } - def->error_policy = error_policy; - } - VIR_FREE(tmp); - - if ((tmp = virXMLPropString(cur, "rerror_policy"))) { - int rerror_policy; + if (virXMLPropEnum(cur, "cache", virDomainDiskCacheTypeFromString, + VIR_XML_PROP_NONE, &def->cachemode) < 0) + return -1; - if (((rerror_policy = virDomainDiskErrorPolicyTypeFromString(tmp)) <= 0) || - (rerror_policy == VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk read error policy '%s'"), tmp); - return -1; - } - def->rerror_policy = rerror_policy; - } - VIR_FREE(tmp); + if (virXMLPropEnum(cur, "error_policy", + virDomainDiskErrorPolicyTypeFromString, + VIR_XML_PROP_NONZERO, &def->error_policy) < 0) + return -1; - if ((tmp = virXMLPropString(cur, "io"))) { - int iomode; + if (virXMLPropEnum(cur, "rerror_policy", + virDomainDiskErrorPolicyTypeFromString, + VIR_XML_PROP_NONZERO, &def->rerror_policy) < 0) + return -1; - if ((iomode = virDomainDiskIoTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk io mode '%s'"), tmp); - return -1; - } - def->iomode = iomode; + if (def->rerror_policy == VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Invalid disk read error policy: '%s'"), + virDomainDiskErrorPolicyTypeToString(def->rerror_policy)); + return -1; } - VIR_FREE(tmp); - if ((tmp = virXMLPropString(cur, "ioeventfd"))) { - int value; - if ((value = virTristateSwitchTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk ioeventfd mode '%s'"), tmp); - return -1; - } - def->ioeventfd = value; - } - VIR_FREE(tmp); + if (virXMLPropEnum(cur, "io", virDomainDiskIoTypeFromString, + VIR_XML_PROP_NONZERO, &def->iomode) < 0) + return -1; - if ((tmp = virXMLPropString(cur, "event_idx"))) { - int value; - if ((value = virTristateSwitchTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk event_idx mode '%s'"), tmp); - return -1; - } - def->event_idx = value; - } - VIR_FREE(tmp); + if (virXMLPropTristateSwitch(cur, "ioeventfd", VIR_XML_PROP_NONE, + &def->ioeventfd) < 0) + return -1; - if ((tmp = virXMLPropString(cur, "copy_on_read"))) { - int value; - if ((value = virTristateSwitchTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk copy_on_read mode '%s'"), tmp); - return -1; - } - def->copy_on_read = value; - } - VIR_FREE(tmp); + if (virXMLPropTristateSwitch(cur, "event_idx", VIR_XML_PROP_NONE, + &def->event_idx) < 0) + return -1; - if ((tmp = virXMLPropString(cur, "discard"))) { - int discard; + if (virXMLPropTristateSwitch(cur, "copy_on_read", VIR_XML_PROP_NONE, + &def->copy_on_read) < 0) + return -1; - if ((discard = virDomainDiskDiscardTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk discard mode '%s'"), tmp); - return -1; - } - def->discard = discard; - } - VIR_FREE(tmp); + if (virXMLPropEnum(cur, "discard", virDomainDiskDiscardTypeFromString, + VIR_XML_PROP_NONZERO, &def->discard) < 0) + return -1; - if ((tmp = virXMLPropString(cur, "iothread")) && - (virStrToLong_uip(tmp, NULL, 10, &def->iothread) < 0 || - def->iothread == 0)) { - virReportError(VIR_ERR_XML_ERROR, - _("Invalid iothread attribute in disk driver element: %s"), - tmp); + if (virXMLPropUInt(cur, "iothread", 10, + VIR_XML_PROP_NONE | VIR_XML_PROP_NONZERO, + &def->iothread) < 0) return -1; - } - VIR_FREE(tmp); if ((tmp = virXMLPropString(cur, "type"))) { if (STREQ(tmp, "aio")) { @@ -9079,29 +9021,15 @@ virDomainDiskDefDriverParseXML(virDomainDiskDef *def, return -1; } } - - VIR_FREE(tmp); } - if ((tmp = virXMLPropString(cur, "detect_zeroes"))) { - int detect_zeroes; - - if ((detect_zeroes = virDomainDiskDetectZeroesTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown driver detect_zeroes value '%s'"), tmp); - return -1; - } - def->detect_zeroes = detect_zeroes; - } - VIR_FREE(tmp); + if (virXMLPropEnum(cur, "detect_zeroes", + virDomainDiskDetectZeroesTypeFromString, + VIR_XML_PROP_NONZERO, &def->detect_zeroes) < 0) + return -1; - if ((tmp = virXMLPropString(cur, "queues")) && - virStrToLong_uip(tmp, NULL, 10, &def->queues) < 0) { - virReportError(VIR_ERR_XML_ERROR, - _("'queues' attribute must be positive number: %s"), - tmp); + if (virXMLPropUInt(cur, "queues", 10, VIR_XML_PROP_NONE, &def->queues) < 0) return -1; - } if (virParseScaledValue("./metadata_cache/max_size", NULL, ctxt, -- 2.26.3

Preparatory step to remove virDomainChrSourceDefParseMode. Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/conf/domain_conf.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 1bbf907596..cdc32e52dd 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -11455,6 +11455,20 @@ typedef enum { } virDomainChrSourceModeType; +static int +virDomainChrSourceModeTypeFromString(const char *str) +{ + if (!str) + return -1; + + if (STREQ(str, "connect")) + return VIR_DOMAIN_CHR_SOURCE_MODE_CONNECT; + if (STREQ(str, "bind")) + return VIR_DOMAIN_CHR_SOURCE_MODE_BIND; + + return -1; +} + /** * virDomainChrSourceDefParseMode: * @source: XML dom node @@ -11466,16 +11480,18 @@ static int virDomainChrSourceDefParseMode(xmlNodePtr source) { g_autofree char *mode = virXMLPropString(source, "mode"); + int result; - if (!mode || STREQ(mode, "connect")) { + if (!mode) return VIR_DOMAIN_CHR_SOURCE_MODE_CONNECT; - } else if (STREQ(mode, "bind")) { - return VIR_DOMAIN_CHR_SOURCE_MODE_BIND; + + if ((result = virDomainChrSourceModeTypeFromString(mode)) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unknown source mode '%s'"), mode); + return -1; } - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unknown source mode '%s'"), mode); - return -1; + return result; } -- 2.26.3

Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/conf/domain_conf.c | 40 +++++++++------------------------------- 1 file changed, 9 insertions(+), 31 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index cdc32e52dd..447fc7dfcb 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -11469,31 +11469,6 @@ virDomainChrSourceModeTypeFromString(const char *str) return -1; } -/** - * virDomainChrSourceDefParseMode: - * @source: XML dom node - * - * Returns: -1 in case of error, - * virDomainChrSourceModeType in case of success - */ -static int -virDomainChrSourceDefParseMode(xmlNodePtr source) -{ - g_autofree char *mode = virXMLPropString(source, "mode"); - int result; - - if (!mode) - return VIR_DOMAIN_CHR_SOURCE_MODE_CONNECT; - - if ((result = virDomainChrSourceModeTypeFromString(mode)) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unknown source mode '%s'"), mode); - return -1; - } - - return result; -} - static int virDomainChrSourceDefParseTCP(virDomainChrSourceDef *def, @@ -11501,11 +11476,12 @@ virDomainChrSourceDefParseTCP(virDomainChrSourceDef *def, xmlXPathContextPtr ctxt, unsigned int flags) { - int mode; + virDomainChrSourceModeType mode = VIR_DOMAIN_CHR_SOURCE_MODE_CONNECT; int tmpVal; g_autofree char *tmp = NULL; - if ((mode = virDomainChrSourceDefParseMode(source)) < 0) + if (virXMLPropEnum(source, "mode", virDomainChrSourceModeTypeFromString, + VIR_XML_PROP_NONE, &mode) < 0) return -1; def->data.tcp.listen = mode == VIR_DOMAIN_CHR_SOURCE_MODE_BIND; @@ -11549,9 +11525,10 @@ static int virDomainChrSourceDefParseUDP(virDomainChrSourceDef *def, xmlNodePtr source) { - int mode; + virDomainChrSourceModeType mode = VIR_DOMAIN_CHR_SOURCE_MODE_CONNECT; - if ((mode = virDomainChrSourceDefParseMode(source)) < 0) + if (virXMLPropEnum(source, "mode", virDomainChrSourceModeTypeFromString, + VIR_XML_PROP_NONE, &mode) < 0) return -1; if (mode == VIR_DOMAIN_CHR_SOURCE_MODE_CONNECT && @@ -11573,9 +11550,10 @@ virDomainChrSourceDefParseUnix(virDomainChrSourceDef *def, xmlNodePtr source, xmlXPathContextPtr ctxt) { - int mode; + virDomainChrSourceModeType mode = VIR_DOMAIN_CHR_SOURCE_MODE_CONNECT; - if ((mode = virDomainChrSourceDefParseMode(source)) < 0) + if (virXMLPropEnum(source, "mode", virDomainChrSourceModeTypeFromString, + VIR_XML_PROP_NONE, &mode) < 0) return -1; def->data.nix.listen = mode == VIR_DOMAIN_CHR_SOURCE_MODE_BIND; -- 2.26.3

Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/conf/domain_conf.c | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 447fc7dfcb..24c0943d62 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -11477,8 +11477,6 @@ virDomainChrSourceDefParseTCP(virDomainChrSourceDef *def, unsigned int flags) { virDomainChrSourceModeType mode = VIR_DOMAIN_CHR_SOURCE_MODE_CONNECT; - int tmpVal; - g_autofree char *tmp = NULL; if (virXMLPropEnum(source, "mode", virDomainChrSourceModeTypeFromString, VIR_XML_PROP_NONE, &mode) < 0) @@ -11488,26 +11486,16 @@ virDomainChrSourceDefParseTCP(virDomainChrSourceDef *def, def->data.tcp.host = virXMLPropString(source, "host"); def->data.tcp.service = virXMLPropString(source, "service"); - if ((tmp = virXMLPropString(source, "tls"))) { - int value; - if ((value = virTristateBoolTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_XML_ERROR, - _("unknown chardev 'tls' setting '%s'"), - tmp); - return -1; - } - def->data.tcp.haveTLS = value; - VIR_FREE(tmp); - } + if (virXMLPropTristateBool(source, "tls", VIR_XML_PROP_NONE, + &def->data.tcp.haveTLS) < 0) + return -1; - if ((flags & VIR_DOMAIN_DEF_PARSE_STATUS) && - (tmp = virXMLPropString(source, "tlsFromConfig"))) { - if (virStrToLong_i(tmp, NULL, 10, &tmpVal) < 0) { - virReportError(VIR_ERR_XML_ERROR, - _("Invalid tlsFromConfig value: %s"), - tmp); + if (flags & VIR_DOMAIN_DEF_PARSE_STATUS) { + int tmpVal; + + if (virXMLPropInt(source, "tlsFromConfig", 10, VIR_XML_PROP_NONE, + &tmpVal) < 0) return -1; - } def->data.tcp.tlsFromConfig = !!tmpVal; } -- 2.26.3

On 4/22/21 12:32 PM, Tim Wiederhake wrote:
For background, see https://listman.redhat.com/archives/libvir-list/2021-April/msg00668.html
Tim Wiederhake (10): virDomainDiskDef: Change type of cachemode to virDomainDiskCache virDomainDiskDef: Change type of error_policy to virDomainDiskErrorPolicy virDomainDiskDef: Change type of rerror_policy to virDomainDiskErrorPolicy virDomainDiskDef: Change type of iomode to virDomainDiskInfo virDomainDiskDef: Change type of discard to virDomainDiskDiscard virDomainDiskDef: Change type of detect_zeroes to virDomainDiskDetectZeroes virDomainDiskDefDriverParseXML: Use virXMLProp* domain_conf: Introduce function virDomainChrSouceModeTypeFromString domain_conf: Remove function virDomainChrSourceDefParseMode virDomainChrSourceDefParseTCP: Use virXMLProp*
src/conf/domain_conf.c | 176 +++++++++++++---------------------------- src/conf/domain_conf.h | 12 +-- 2 files changed, 61 insertions(+), 127 deletions(-)
Reviewed-by: Michal Privoznik <mprivozn@redhat.com> and pushed. Michal
participants (2)
-
Michal Privoznik
-
Tim Wiederhake