all repos — openbox @ aeda86f46056a10126f85ad43fb51a92075bcefd

openbox fork - make it a bit more like ryudo

add parse_attr_bool, and fix a possible segfault
Dana Jansens danakj@orodu.net
commit

aeda86f46056a10126f85ad43fb51a92075bcefd

parent

3b77950a79bd2ad93ff69166ed782438ef4c6d13

2 files changed, 26 insertions(+), 2 deletions(-)

jump to
M parser/parse.cparser/parse.c

@@ -226,6 +226,28 @@ }

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; }
M parser/parse.hparser/parse.h

@@ -67,6 +67,7 @@ const gchar *name);

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 */