xml_AttrList* xml_attr_list_add (xml_AttrList *list,
xml_AttrData *data)
{
if (! data) return (xml_AttrList*) data;
if (! list || ! data->name) return xml_attr_list_prepend (list, data);
___ xml_AttrList* attr = list;
while (1)
{
gint cmp = strcmp (attr->data->name, data->name);
if (cmp < 0) {
if (attr->next) { attr = attr->next; continue; } |
attr->next = xml_attr_list_alloc_link ();
attr->next->prev = attr;
attr->next->data = data;
return list;
} |
if (cmp == 0) {
xml_attr_data_free (attr->data);
attr->data = data;
return list;
} |
return xml_attr_list_insert_before (list, attr, data);
} |
____;
} |
|