- root = find_page_setup(root);
- if (!root)
- return 0;
- root->next = NULL;
-
- if (!strcmp(argv[2], "containment"))
- print_containment (root);
- else if (!strcmp(argv[2], "attributes"))
- print_attributes (root);
- else if (!strcmp(argv[2], "cdata"))
- print_cdata (root);
- else if (!strcmp(argv[2], "text"))
- print_text (root);
- else if (!strncmp(argv[2], "attr:", 5))
- print_attribute (root, argv[2] + 5);
- else if (!strcmp(argv[2], "labels"))
- print_labels (root);
- else
- usage ();
+
+ for (int i = 2; i < argc; i++)
+ {
+ if (!strcmp(argv[i], "parents"))
+ print_parents (root);
+ else if (!strcmp(argv[i], "containment"))
+ print_containment (root);
+ else if (!strcmp(argv[i], "attributes"))
+ print_attributes (root);
+ else if (!strcmp(argv[i], "cdata"))
+ print_cdata (root);
+ else if (!strcmp(argv[i], "text"))
+ print_text (root);
+ else if (!strncmp(argv[i], "element:", 8))
+ print_element (doc, root, argv[i] + 8);
+ else if (!strncmp(argv[i], "attr:", 5))
+ 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))
+ check_version (root, argv[i] + 8);
+ else
+ usage ();
+ }