diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-08-07 22:31:52 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-08-07 22:39:36 +0200 |
commit | aa78a088dde9875ae3e31468ea5e4ca3bd349d2c (patch) | |
tree | 1f06ab113506213e0d036296deef6b73aae3f37d /src/mxml.c | |
parent | fc7d496788b8abb3f009b73898508032eced0c6c (diff) |
src: xml: cleanup set element parsing
Move nft_mxml_set_elem_parse to set_elem.c to improve readability, thus,
we don't need to jump from set_elem.c to mxml.c to see how the parsing
is done.
I have also refactored some common parsing code in the new helper
function nft_mxml_set_elem_parse, that avoids conversions from XML tree
to text and then again back to tree.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/mxml.c')
-rw-r--r-- | src/mxml.c | 46 |
1 files changed, 0 insertions, 46 deletions
@@ -184,50 +184,4 @@ int nft_mxml_family_parse(mxml_node_t *tree, const char *node_name, return family; } - -struct nft_set_elem *nft_mxml_set_elem_parse(mxml_node_t *node) -{ - mxml_node_t *save; - char *set_elem_str; - struct nft_set_elem *elem; - - if (node == NULL) - goto einval; - - if (strcmp(node->value.opaque, "set_elem") != 0) - goto einval; - - elem = nft_set_elem_alloc(); - if (elem == NULL) - goto enomem; - - /* This is a hack for mxml to print just the current node */ - save = node->next; - node->next = NULL; - - set_elem_str = mxmlSaveAllocString(node, MXML_NO_CALLBACK); - node->next = save; - - if (set_elem_str == NULL) { - xfree(elem); - goto enomem; - } - - if (nft_set_elem_parse(elem, NFT_SET_PARSE_XML, - set_elem_str) != 0) { - xfree(set_elem_str); - xfree(elem); - return NULL; - } - - xfree(set_elem_str); - - return elem; -einval: - errno = EINVAL; - return NULL; -enomem: - errno = ENOMEM; - return NULL; -} #endif |