mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-30 09:53:10 +00:00
util: Introduce virStringParseYesNo helper
This helper performs a conversion from a "yes|no" string to a corresponding boolean. This allows us to drop several repetitive if-then-else string->bool conversion blocks. Signed-off-by: Shotaro Gotanda <g.sho1500@gmail.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
ff86e79faf
commit
612c0d4bb8
@ -8465,11 +8465,7 @@ virSecurityLabelDefParseXML(xmlXPathContextPtr ctxt,
|
|||||||
p = virXMLPropStringLimit(ctxt->node, "relabel",
|
p = virXMLPropStringLimit(ctxt->node, "relabel",
|
||||||
VIR_SECURITY_LABEL_BUFLEN-1);
|
VIR_SECURITY_LABEL_BUFLEN-1);
|
||||||
if (p) {
|
if (p) {
|
||||||
if (STREQ(p, "yes")) {
|
if (virStringParseYesNo(p, &seclabel->relabel) < 0) {
|
||||||
seclabel->relabel = true;
|
|
||||||
} else if (STREQ(p, "no")) {
|
|
||||||
seclabel->relabel = false;
|
|
||||||
} else {
|
|
||||||
virReportError(VIR_ERR_XML_ERROR,
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
_("invalid security relabel value %s"), p);
|
_("invalid security relabel value %s"), p);
|
||||||
goto error;
|
goto error;
|
||||||
@ -8699,11 +8695,7 @@ virSecurityDeviceLabelDefParseXML(virSecurityDeviceLabelDefPtr **seclabels_rtn,
|
|||||||
|
|
||||||
relabel = virXMLPropString(list[i], "relabel");
|
relabel = virXMLPropString(list[i], "relabel");
|
||||||
if (relabel != NULL) {
|
if (relabel != NULL) {
|
||||||
if (STREQ(relabel, "yes")) {
|
if (virStringParseYesNo(relabel, &seclabels[i]->relabel) < 0) {
|
||||||
seclabels[i]->relabel = true;
|
|
||||||
} else if (STREQ(relabel, "no")) {
|
|
||||||
seclabels[i]->relabel = false;
|
|
||||||
} else {
|
|
||||||
virReportError(VIR_ERR_XML_ERROR,
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
_("invalid security relabel value %s"),
|
_("invalid security relabel value %s"),
|
||||||
relabel);
|
relabel);
|
||||||
@ -13706,11 +13698,7 @@ virDomainGraphicsDefParseXMLSDL(virDomainGraphicsDefPtr def,
|
|||||||
ctxt->node = node;
|
ctxt->node = node;
|
||||||
|
|
||||||
if (fullscreen != NULL) {
|
if (fullscreen != NULL) {
|
||||||
if (STREQ(fullscreen, "yes")) {
|
if (virStringParseYesNo(fullscreen, &def->data.sdl.fullscreen) < 0) {
|
||||||
def->data.sdl.fullscreen = true;
|
|
||||||
} else if (STREQ(fullscreen, "no")) {
|
|
||||||
def->data.sdl.fullscreen = false;
|
|
||||||
} else {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("unknown fullscreen value '%s'"), fullscreen);
|
_("unknown fullscreen value '%s'"), fullscreen);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -13798,11 +13786,7 @@ virDomainGraphicsDefParseXMLDesktop(virDomainGraphicsDefPtr def,
|
|||||||
VIR_AUTOFREE(char *) fullscreen = virXMLPropString(node, "fullscreen");
|
VIR_AUTOFREE(char *) fullscreen = virXMLPropString(node, "fullscreen");
|
||||||
|
|
||||||
if (fullscreen != NULL) {
|
if (fullscreen != NULL) {
|
||||||
if (STREQ(fullscreen, "yes")) {
|
if (virStringParseYesNo(fullscreen, &def->data.desktop.fullscreen) < 0) {
|
||||||
def->data.desktop.fullscreen = true;
|
|
||||||
} else if (STREQ(fullscreen, "no")) {
|
|
||||||
def->data.desktop.fullscreen = false;
|
|
||||||
} else {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("unknown fullscreen value '%s'"), fullscreen);
|
_("unknown fullscreen value '%s'"), fullscreen);
|
||||||
return -1;
|
return -1;
|
||||||
@ -15511,11 +15495,7 @@ virDomainRedirFilterUSBDevDefParseXML(xmlNodePtr node)
|
|||||||
|
|
||||||
allow = virXMLPropString(node, "allow");
|
allow = virXMLPropString(node, "allow");
|
||||||
if (allow) {
|
if (allow) {
|
||||||
if (STREQ(allow, "yes")) {
|
if (virStringParseYesNo(allow, &def->allow) < 0) {
|
||||||
def->allow = true;
|
|
||||||
} else if (STREQ(allow, "no")) {
|
|
||||||
def->allow = false;
|
|
||||||
} else {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
_("Invalid allow value, either 'yes' or 'no'"));
|
_("Invalid allow value, either 'yes' or 'no'"));
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -147,11 +147,7 @@ secretXMLParseNode(xmlDocPtr xml, xmlNodePtr root)
|
|||||||
|
|
||||||
prop = virXPathString("string(./@ephemeral)", ctxt);
|
prop = virXPathString("string(./@ephemeral)", ctxt);
|
||||||
if (prop != NULL) {
|
if (prop != NULL) {
|
||||||
if (STREQ(prop, "yes")) {
|
if (virStringParseYesNo(prop, &def->isephemeral) < 0) {
|
||||||
def->isephemeral = true;
|
|
||||||
} else if (STREQ(prop, "no")) {
|
|
||||||
def->isephemeral = false;
|
|
||||||
} else {
|
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||||
_("invalid value of 'ephemeral'"));
|
_("invalid value of 'ephemeral'"));
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -161,11 +157,7 @@ secretXMLParseNode(xmlDocPtr xml, xmlNodePtr root)
|
|||||||
|
|
||||||
prop = virXPathString("string(./@private)", ctxt);
|
prop = virXPathString("string(./@private)", ctxt);
|
||||||
if (prop != NULL) {
|
if (prop != NULL) {
|
||||||
if (STREQ(prop, "yes")) {
|
if (virStringParseYesNo(prop, &def->isprivate) < 0) {
|
||||||
def->isprivate = true;
|
|
||||||
} else if (STREQ(prop, "no")) {
|
|
||||||
def->isprivate = false;
|
|
||||||
} else {
|
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||||
_("invalid value of 'private'"));
|
_("invalid value of 'private'"));
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -2988,6 +2988,7 @@ virStringListRemove;
|
|||||||
virStringMatch;
|
virStringMatch;
|
||||||
virStringMatchesNameSuffix;
|
virStringMatchesNameSuffix;
|
||||||
virStringParsePort;
|
virStringParsePort;
|
||||||
|
virStringParseYesNo;
|
||||||
virStringReplace;
|
virStringReplace;
|
||||||
virStringSearch;
|
virStringSearch;
|
||||||
virStringSortCompare;
|
virStringSortCompare;
|
||||||
|
@ -1548,3 +1548,25 @@ virStringParsePort(const char *str,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* virStringParseYesNo:
|
||||||
|
* @str: "yes|no" to parse, must not be NULL.
|
||||||
|
* @result: pointer to the boolean result of @str conversion
|
||||||
|
*
|
||||||
|
* Parses a "yes|no" string and converts it into a boolean.
|
||||||
|
*
|
||||||
|
* Returns 0 on success and -1 on error.
|
||||||
|
*/
|
||||||
|
int virStringParseYesNo(const char *str, bool *result)
|
||||||
|
{
|
||||||
|
if (STREQ(str, "yes"))
|
||||||
|
*result = true;
|
||||||
|
else if (STREQ(str, "no"))
|
||||||
|
*result = false;
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -316,6 +316,9 @@ int virStringParsePort(const char *str,
|
|||||||
unsigned int *port)
|
unsigned int *port)
|
||||||
ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
||||||
|
|
||||||
|
int virStringParseYesNo(const char *str,
|
||||||
|
bool *result)
|
||||||
|
ATTRIBUTE_RETURN_CHECK;
|
||||||
/**
|
/**
|
||||||
* VIR_AUTOSTRINGLIST:
|
* VIR_AUTOSTRINGLIST:
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user