On 01.03.2019 11:53, Stefan Sperling wrote: > On Thu, Feb 28, 2019 at 10:44:25PM +0100, Denis Excoffier wrote: >> Hello, >> >> The situation of the replacement of a directory by a circular symlink >> generates an XML fragment which is invalid, hence triggers a failure >> within the calling system. See hereafter the recipe. >> >> Starting from a clean folder, do the following: >> >> % svn mkdir 1 >> A 1 >> % rmdir 1 >> % ln -s 1 1 >> % touch 2 >> % svn status --xml >> <?xml version="1.0" encoding="UTF-8"?> >> <status> >> <target >> path="."> >> <entry >> path="1"> >> <wc-status >> item="obstructed" >> revision="-1" >> props="none"> >> </wc-status> >> </entry> >> svn: E000062: Can't open directory '/Users/dexco/svntest/svn/1': Too many >> levels of symbolic links >> % >> >> There is a missing end tag for <target> and <status>. >> Another issue is missing output: path '2' is not listed. >> >> The correction of these issues will be much appreciated (i use 1.11.1). >> >> Regards, >> >> Denis Excoffier. > Hi Denis, > > This problem is not specific to symbolic links. > There are quite a few cases where --xml produces invalid XML > when it runs into some kind of error. Perhaps the command > line client should be fixed to close open XML tags when an > error occurs, though this also risks people or scripts not > noticing such errors. > > I suppose that, ideally, our XML output would embed errors > inside the XML stream in a well-defined manner, as well as > printing errors on stderr. > > So fixing this would require some non-trivial amount of effort. > Would you have time and skills to work on this issue?
My advice is to leave well enough alone. Any callers of our tools _should_ check the exit code before assuming that the output is valid. Just streaming the output through a SAX parser isn't the best strategy. -- Brane