Il 31/05/2012 17:44, Luiz Capitulino ha scritto: >> One is "do not shoehorn errors into errno values". So for QOM invalid >> values we >> have PropertyValueBad, not a generic InvalidArgument value. We convert >> everything >> to Error rather than returning negative errno values and then returning >> generic >> error codes, because those would be ugly and non-descriptive. I agree with >> that. >> >> The other is "when errors come straight from the OS, _do_ use errno values". >> This is for OpenFileFailed, for the new socket errors and so on. This is >> what >> I am proposing. >> >> These two rules together match what most other programs do. >> >> $ echo | sed p > /dev/full >> sed: couldn't flush stdout: No space left on device >> ^^^^^^^^^^^^^^ error type >> ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ arguments >> >> That would become, in JSON: >> >> { 'error': 'FlushFailed', >> 'file': 'stdout', >> 'os_error': 'enospc' } > > Actually, I did propose something similar in the past but Anthony objected.
Looks like in the meanwhile we moved closer to this mechanism (OpenFileFailed, Sock*, etc.), except we have no clear way to identify _what_ error actually happened rather than _where_. > We could have optional arguments to NoSpaceLeftOnDevice. Could bloat the > error, > or not (as most error scenarios can be common to each other). Not as soon as you start reusing the same errors for QOM or similar scenarios (like PermissionDenied). Paolo