summaryrefslogtreecommitdiffstats
path: root/gxpd.c
diff options
context:
space:
mode:
Diffstat (limited to 'gxpd.c')
-rw-r--r--gxpd.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/gxpd.c b/gxpd.c
index 70cd2bf..d6a2601 100644
--- a/gxpd.c
+++ b/gxpd.c
@@ -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);