}
static __attribute__((unused)) xmlNode *
-find_page_setup (xmlNode *node)
+find_node (xmlNode *node, const char *name)
{
for (; node; node = node->next)
{
- if (node->name && !strcmp ((char *) node->name, "pageSetup"))
+ if (node->name && !strcmp ((char *) node->name, name))
return node;
- xmlNode *ps = find_page_setup (node->children);
+ xmlNode *ps = find_node (node->children, name);
if (ps)
return ps;
}
xmlNode *root = xmlDocGetRootElement(doc);
-#if 0
- /* Limit what we look at to pageSetup node and below. */
- root = find_page_setup(root);
- if (!root)
- return 0;
- root->next = NULL;
-#endif
-
for (int i = 2; i < argc; i++)
{
if (!strcmp(argv[i], "parents"))
print_attribute (root, argv[i] + 5);
else if (!strncmp(argv[i], "id:", 3))
print_id (doc, root, argv[i] + 3);
+ else if (!strncmp(argv[i], "root:", 5))
+ {
+ /* Limit content to descendants of the given node. */
+ root = find_node (root, argv[i] + 5);
+ if (!root)
+ return 0;
+ root->next = NULL;
+ }
+ else if (!strncmp(argv[i], "musthave:", 9))
+ {
+ if (!find_node (root, argv[i] + 9))
+ return 0;
+ }
else if (!strcmp(argv[i], "labels"))
print_labels (root);
else if (!strncmp(argv[i], "version=", 8))