When you check several files and the fsck fails, you get confusing output:
O fsck test1 (checksum...) 
E  Only 1 of 2 trustworthy copies of test1 exist.
E  Back it up with git-annex copy.
O
O failed
O fsck test2 (checksum...) 
E  Only 1 of 2 trustworthy copies of test2 exist.
E  Back it up with git-annex copy.
O 
O failed
The newline is in the wrong place and confuses the user. It should be printed _after_ "failed". > This is a consequence of part of the output being printed to stderr, and > part to stdout. I've marked the lines above with E and O. > > Normally a "failed" is preceeded by a message output to stdout desribing > the problem; such a message will not be "\n" terminated, so a newline > is always displayed before "failed". In this case, since the message > is sent to stderr, it is newline terminated. > > Fixing this properly would involve storing state, or rethinking > when git-annex displays newlines (and I rather like its behavior > otherwise). > > A related problem occurs if an error message is unexpetedly printed. > Dummying up an example: > > O get test1 (from foo...) E git-annex: failed to run ssh > failed > > --[[Joey]] >> Well, I fixed this in all cases except a thrown non-IO error (last >> example aboce), which output is printed by haskell's runtime. I'd >> have to add a second error handler to handle those, and it's not >> clear what it would do. Often an error will occur before anything >> else is printed, and then the current behavior is right; if something >> has been printed it would be nice to have a newline before the error, >> but by the time the error is caught we'd be out of the annex monad >> and not really have any way to know if something has been printed. >> I think my fix is good enough [[done]] --[[Joey]]