diff options
author | Dan Libby <danda@php.net> | 2002-07-05 04:43:55 +0000 |
---|---|---|
committer | Dan Libby <danda@php.net> | 2002-07-05 04:43:55 +0000 |
commit | 2154e7b55b91e294cf5635aedc2388524a4d3ac9 (patch) | |
tree | 49a0a791a36c432793354cf9a959918674b31a90 /ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c | |
parent | eebae9f9efcda768d4059ae380173e4e752638d8 (diff) | |
download | php-git-2154e7b55b91e294cf5635aedc2388524a4d3ac9.tar.gz |
merged in updates from SF project. bring php repository up to date with xmlrpc-epi version 0.51
Diffstat (limited to 'ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c')
-rw-r--r-- | ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c b/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c index 8bace4dab6..c45d3ec3db 100644 --- a/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c +++ b/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c @@ -71,11 +71,30 @@ XMLRPC_VALUE xml_element_to_XMLRPC_REQUEST_worker(XMLRPC_REQUEST request, XMLRPC current_val = XMLRPC_CreateValueEmpty(); } - if (el->name) { - if (!strcmp(el->name, ELEM_DATA) /* should be ELEM_ARRAY, but there is an extra level. weird */ - || ((!strcmp(el->name, ELEM_PARAMS)) && - (XMLRPC_RequestGetRequestType(request) == xmlrpc_request_call)) /* this "PARAMS" concept is silly. dave?! */ - || !strcmp(el->name, ELEM_FAULT)) { /* so is this "FAULT" nonsense. */ + if (el->name) { + + /* first, deal with the crazy/stupid fault format */ + if (!strcmp(el->name, ELEM_FAULT)) { + xml_element* fault_value = (xml_element*)Q_Head(&el->children); + XMLRPC_SetIsVector(current_val, xmlrpc_vector_struct); + + if(fault_value) { + xml_element* fault_struct = (xml_element*)Q_Head(&fault_value->children); + if(fault_struct) { + xml_element* iter = (xml_element*)Q_Head(&fault_struct->children); + + while (iter) { + XMLRPC_VALUE xNextVal = XMLRPC_CreateValueEmpty(); + xml_element_to_XMLRPC_REQUEST_worker(request, current_val, xNextVal, iter); + XMLRPC_AddValueToVector(current_val, xNextVal); + iter = (xml_element*)Q_Next(&fault_struct->children); + } + } + } + } + else if (!strcmp(el->name, ELEM_DATA) /* should be ELEM_ARRAY, but there is an extra level. weird */ + || (!strcmp(el->name, ELEM_PARAMS) && + (XMLRPC_RequestGetRequestType(request) == xmlrpc_request_call)) ) { /* this "PARAMS" concept is silly. dave?! */ xml_element* iter = (xml_element*)Q_Head(&el->children); XMLRPC_SetIsVector(current_val, xmlrpc_vector_array); |