projects
/
pspp
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
925d31a
)
parse-xml: New features root: and musthave:.
author
Ben Pfaff
<blp@cs.stanford.edu>
Mon, 17 Jul 2017 22:29:06 +0000
(15:29 -0700)
committer
Ben Pfaff
<blp@cs.stanford.edu>
Mon, 17 Jul 2017 22:29:06 +0000
(15:29 -0700)
parse-xml.c
patch
|
blob
|
history
diff --git
a/parse-xml.c
b/parse-xml.c
index d8726abcceeb23dbc3de7a64ec49da04e389a47e..15c4ba2e9bc1c21cb4eb4935304d8c894add1581 100644
(file)
--- a/
parse-xml.c
+++ b/
parse-xml.c
@@
-205,14
+205,14
@@
print_id (xmlDoc *doc, xmlNode *node, const char *id)
}
static __attribute__((unused)) xmlNode *
}
static __attribute__((unused)) xmlNode *
-find_
page_setup (xmlNode *nod
e)
+find_
node (xmlNode *node, const char *nam
e)
{
for (; node; node = node->next)
{
{
for (; node; node = node->next)
{
- if (node->name && !strcmp ((char *) node->name,
"pageSetup"
))
+ if (node->name && !strcmp ((char *) node->name,
name
))
return node;
return node;
- xmlNode *ps = find_
page_setup (node->children
);
+ xmlNode *ps = find_
node (node->children, name
);
if (ps)
return ps;
}
if (ps)
return ps;
}
@@
-279,14
+279,6
@@
main (int argc, char **argv)
xmlNode *root = xmlDocGetRootElement(doc);
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"))
for (int i = 2; i < argc; i++)
{
if (!strcmp(argv[i], "parents"))
@@
-305,6
+297,19
@@
main (int argc, char **argv)
print_attribute (root, argv[i] + 5);
else if (!strncmp(argv[i], "id:", 3))
print_id (doc, root, argv[i] + 3);
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))
else if (!strcmp(argv[i], "labels"))
print_labels (root);
else if (!strncmp(argv[i], "version=", 8))