diff options
Diffstat (limited to 'gxpd.c')
-rw-r--r-- | gxpd.c | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -100,15 +100,15 @@ gxpd(char *fn, const char *xpath_query, const char *prefix) xpath_query, fn); exit(1); } - if (obj->type != XPATH_NODESET || obj->nodesetval == NULL) { - fprintf(stderr, "XPath expression '%s' did not match a nodeset.\n", xpath_query); - exit(1); + /* return early if there were no nodes to remove */ + if (obj->type != XPATH_NODESET) return 1; + if (obj->nodesetval == NULL) return 1; + + for (i = 0; i < obj->nodesetval->nodeNr; i++) { + xmlUnlinkNode(obj->nodesetval->nodeTab[i]); + xmlFreeNode(obj->nodesetval->nodeTab[i]); } - for (i = 0; i < obj->nodesetval->nodeNr; i++) { - xmlUnlinkNode(obj->nodesetval->nodeTab[i]); - xmlFreeNode(obj->nodesetval->nodeTab[i]); - } - printf("Removed %d nodes\n", i); + printf("%d nodes removed from %s\n", i, fn); xmlXPathFreeObject(obj); xmlSaveFile(fn, doc); |