add parse_attr_bool, and fix a possible segfault

This commit is contained in:
Dana Jansens 2007-03-04 07:09:55 +00:00
parent 3b77950a79
commit aeda86f460
2 changed files with 26 additions and 2 deletions

View file

@ -226,6 +226,28 @@ xmlNodePtr parse_find_node(const gchar *tag, xmlNodePtr node)
return NULL;
}
gboolean parse_attr_bool(const gchar *name, xmlNodePtr node, gboolean *value)
{
xmlChar *c = xmlGetProp(node, (const xmlChar*) name);
gboolean r = FALSE;
if (c) {
if (!xmlStrcasecmp(c, (const xmlChar*) "true"))
*value = TRUE, r = TRUE;
else if (!xmlStrcasecmp(c, (const xmlChar*) "yes"))
*value = TRUE, r = TRUE;
else if (!xmlStrcasecmp(c, (const xmlChar*) "on"))
*value = TRUE, r = TRUE;
else if (!xmlStrcasecmp(c, (const xmlChar*) "false"))
*value = FALSE, r = TRUE;
else if (!xmlStrcasecmp(c, (const xmlChar*) "no"))
*value = FALSE, r = TRUE;
else if (!xmlStrcasecmp(c, (const xmlChar*) "off"))
*value = FALSE, r = TRUE;
}
xmlFree(c);
return r;
}
gboolean parse_attr_int(const gchar *name, xmlNodePtr node, gint *value)
{
xmlChar *c = xmlGetProp(node, (const xmlChar*) name);
@ -254,8 +276,9 @@ gboolean parse_attr_contains(const gchar *val, xmlNodePtr node,
const gchar *name)
{
xmlChar *c = xmlGetProp(node, (const xmlChar*) name);
gboolean r;
r = !xmlStrcasecmp(c, (const xmlChar*) val);
gboolean r = FALSE;
if (c)
r = !xmlStrcasecmp(c, (const xmlChar*) val);
xmlFree(c);
return r;
}

View file

@ -67,6 +67,7 @@ gboolean parse_attr_contains(const gchar *val, xmlNodePtr node,
gboolean parse_attr_string(const gchar *name, xmlNodePtr node, gchar **value);
gboolean parse_attr_int(const gchar *name, xmlNodePtr node, gint *value);
gboolean parse_attr_bool(const gchar *name, xmlNodePtr node, gboolean *value);
/* paths */