72 |
72 |
73 DavXmlNode *ret = NULL; |
73 DavXmlNode *ret = NULL; |
74 |
74 |
75 while(stack->size > 0) { |
75 while(stack->size > 0) { |
76 ConvXmlElm *c = cxListAt(stack, 0); |
76 ConvXmlElm *c = cxListAt(stack, 0); |
|
77 xmlNode *n = c->node; |
|
78 DavXmlNode *c_parent = c->parent; |
|
79 DavXmlNode *prev = NULL; |
77 cxListRemove(stack, 0); |
80 cxListRemove(stack, 0); |
78 |
|
79 xmlNode *n = c->node; |
|
80 DavXmlNode *prev = NULL; |
|
81 while(n) { |
81 while(n) { |
82 DavXmlNode *newxn = cxCalloc(a, 1, sizeof(DavXmlNode)); |
82 DavXmlNode *newxn = cxCalloc(a, 1, sizeof(DavXmlNode)); |
83 if(!ret) { |
83 if(!ret) { |
84 ret = newxn; |
84 ret = newxn; |
85 } |
85 } |
86 newxn->type = convert_type(n->type); |
86 newxn->type = convert_type(n->type); |
87 newxn->parent = c->parent; |
87 newxn->parent = c_parent; |
88 if(c->parent && !c->parent->children) { |
88 if(c_parent && !c_parent->children) { |
89 c->parent->children = newxn; |
89 c_parent->children = newxn; |
90 } |
90 } |
91 newxn->prev = prev; |
91 newxn->prev = prev; |
92 if(prev) { |
92 if(prev) { |
93 prev->next = newxn; |
93 prev->next = newxn; |
94 } |
94 } |