diff options
author | P. J. McDermott <pj@pehjota.net> | 2021-03-25 17:38:29 (EDT) |
---|---|---|
committer | P. J. McDermott <pj@pehjota.net> | 2021-03-25 17:38:29 (EDT) |
commit | 13a4cf550a771e314ed874c0ae17163a17fe06f0 (patch) | |
tree | 65d0ec378a8959c59edf7367b2ccd01da5931e04 | |
parent | 9389cc62a79a534bf248f620eb495d8584465d27 (diff) | |
download | dodge-balls-13a4cf550a771e314ed874c0ae17163a17fe06f0.zip dodge-balls-13a4cf550a771e314ed874c0ae17163a17fe06f0.tar.gz dodge-balls-13a4cf550a771e314ed874c0ae17163a17fe06f0.tar.bz2 |
db_xml_get_float_attr(): New function
-rw-r--r-- | src/xml.c | 20 | ||||
-rw-r--r-- | src/xml.h | 2 |
2 files changed, 22 insertions, 0 deletions
@@ -122,6 +122,26 @@ db_xml_get_int_attr(XML_Parser p, const char **attr, const char *name, } void +db_xml_get_float_attr(XML_Parser p, const char **attr, const char *name, + float *dest, int req) +{ + for (; attr[0] != NULL; attr += 2) { + if (strcmp(attr[0], name) == 0) { + if (sscanf(attr[1], "%f", dest) == 1) { + return; + } else if (req) { + db_warn("Invalid \"%s\" attribute value", name); + XML_StopParser(p, XML_FALSE); + } + } + } + if (req) { + db_warn("Required attribute \"%s\" not found", name); + XML_StopParser(p, XML_FALSE); + } +} + +void db_xml_get_string_attr(XML_Parser p, const char **attr, const char *name, char **dest, int req) { @@ -35,6 +35,8 @@ void db_xml_get_int_attr(XML_Parser p, const char **attr, const char *name, int *dest, int req); void db_xml_get_uint32_attr(XML_Parser p, const char **attr, const char *name, Uint32 *dest, int req); +void db_xml_get_float_attr(XML_Parser p, const char **attr, const char *name, + float *dest, int req); void db_xml_get_string_attr(XML_Parser p, const char **attr, const char *name, char **dest, int req); void db_xml_node_push(XML_Parser p, void *data, |