static int count_xml_seq_child()

in flood_round_robin.c [708:744]


static int count_xml_seq_child(apr_xml_elem *urllist_elem)
{
    struct apr_xml_elem *e;
    int items = 0;

    for (e = urllist_elem->first_child; e; e = e->next) {
        if (strncasecmp(e->name, XML_URLLIST_SEQUENCE, FLOOD_STRLEN_MAX) == 0) {
            int children_urls, list_count;
            list_count = 0;
            if (e->attr) {
                apr_xml_attr *attr = e->attr;
                while (attr) {
                    if (strncasecmp(attr->name, 
                                    XML_URLLIST_SEQUENCE_LIST,
                                    FLOOD_STRLEN_MAX) == 0) {
                        char *end = (char*)attr->value;
                        list_count++;
                        while (*end && (end = strchr(end, ','))) {
                            list_count++;
                            end++;
                        }
                    }
                    attr = attr->next;
                }
            }
            if (!list_count) {
                apr_file_printf(local_stderr,
                                "Sequence doesn't have any items!\n");
                return 0;
            }
            children_urls = count_xml_seq_child(e);
            children_urls += count_xml_elem_child(e, XML_URLLIST_URL);
            items += list_count * children_urls;
        }
    }
    return items;
}