On 18 Apr 2006, at 06:56, Alain Picard wrote:
Okay -- I've got a fix which ensures that things like "<data> </data>" decode as NIL, instead of " ".
Here are the diffs, in case you want to have a look and/or fold them in.
The gist of it now is that if you're inside a <value>, you always get a string if the inner type is not specified, since the spec says: "If no type is indicated, the type is string."
Thus "<value></value>" now decodes as "".
I also fixed what I think is a bug in that (encode-xml-rpc-value T) ==> "T" instead of <boolean>1</boolean>. (same for NIL).
<diff>
Alain,
I tried to integrate your changes; I didn't take over the special variable: it felt less elegant and I think I managed to solve all your problems without it. I took over most of your code though: thanks! I added a number of extra test cases to test-xml-rpc.lisp to cover all the problems that you reported. Have a look at it and tell me if this works for you. This is the official change log entry (all changes were commit but not yet released as tarball):
* changes due to reporting and initial fixes by Alain Picard * added support for whitespace handling * iso8601->universal-time now accepts leading & trailing whitespace * encode-xml-rpc-value now encodes t and nil correctly as boolean 1 and 0 * parsing doubles (using read-from-string) with reader macros disabled for security * decode-xml-rpc now handles whitespace more correctly in <data> and <value> tags * added several test cases and fixed older stop-server problem
I enclosed a context diff here for your convenience.
Sven
s-xml-rpc-devel@common-lisp.net