xmlNodePtr htmlnode_next(xmlNodePtr top, xmlNodePtr node)
{
- if (node->children)
- return node->children;
-
while (!node->next) {
node = node->parent;
if (!node || node == top)
return node->next;
}
+xmlNodePtr htmlnode_dive(xmlNodePtr top, xmlNodePtr node)
+{
+ if (node->children)
+ return node->children;
+ return htmlnode_next(top, node);
+}
+
+
xmlNodePtr find_form_node(xmlDocPtr doc)
{
xmlNodePtr root, node;
- for (root = node = xmlDocGetRootElement(doc); node; node = htmlnode_next(root, node)) {
+ for (root = node = xmlDocGetRootElement(doc); node; node = htmlnode_dive(root, node)) {
if (node->name && !strcasecmp((char *)node->name, "form"))
return node;
}
xmlnode_get_prop(node, "name", &form->auth_id);
form->banner = strdup(form->auth_id);
- for (child = htmlnode_next(node, node); child && child != node; child = htmlnode_next(node, child)) {
+ for (child = htmlnode_dive(node, node); child && child != node; child = htmlnode_dive(node, child)) {
if (!child->name)
continue;
xmlNodePtr child;
// Set form->action here as a redirect url with keys and ids.
- for (child = htmlnode_next(node, node); child && child != node;
- child = htmlnode_next(node, child)) {
+ for (child = htmlnode_dive(node, node); child && child != node;
+ child = htmlnode_dive(node, child)) {
if (child->name && !strcasecmp((char *)child->name, "table")) {
char *table_id = (char *)xmlGetProp(child, (unsigned char *)"id");
/* html-auth.c */
xmlNodePtr htmlnode_next(xmlNodePtr top, xmlNodePtr node);
+xmlNodePtr htmlnode_dive(xmlNodePtr top, xmlNodePtr node);
xmlNodePtr find_form_node(xmlDocPtr doc);
int parse_input_node(struct openconnect_info *vpninfo, struct oc_auth_form *form,
xmlNodePtr node, const char *submit_button,