diff -Nrc xml-rpc.orig/xml-rpc-client.scm xml-rpc/xml-rpc-client.scm *** xml-rpc.orig/xml-rpc-client.scm 2004-12-08 18:59:54.000000000 +0100 --- xml-rpc/xml-rpc-client.scm 2005-09-08 20:05:12.559767057 +0200 *************** *** 78,87 **** (apply values (map xml-rpc:unmarshall-value x)) ] [`(fault (value ! (struct ! (member (name "faultCode") (value (int ,code))) ! (member (name "faultString") (value (string ,str))) ) ) ) ! (xml-rpc:error (string->number code) (sprintf "XML-RPC fault response (code ~A): ~A" code str)) ] [r (bad r r0)] ) ] [r (bad r r0)] ) ) ] [r (bad r r0)] ) ) ) ) --- 78,94 ---- (apply values (map xml-rpc:unmarshall-value x)) ] [`(fault (value ! ,('struct members ...))) ! (let loop ((code #f) (msg #f) (members members)) ! (if (null? members) ! (xml-rpc:error (and code (string->number code)) ! (sprintf "XML-RPC fault response (code ~A): ~A" code msg)) ! (match (car members) ! [`(member (name "faultCode") (value ,((or 'int 'i4) code))) ! (loop code msg (cdr members))] ! [`(member (name "faultString") (value (string ,msg))) ! (loop code msg (cdr members))] ! [r (bad r r0)])))] [r (bad r r0)] ) ] [r (bad r r0)] ) ) ] [r (bad r r0)] ) ) ) )