On 03-11-14 17:23, Linus Torvalds wrote:
On Nov 3, 2014 8:12 AM, "Jef Driesen" <jef@libdivecomputer.org mailto:jef@libdivecomputer.org> wrote:
I still prefer to have proper integration of the logging functions. Calling
ERROR from your report_error is an ugly hack that throws away several of the nice features of the ERROR macro.
By it fixes one huge big mistake in that macro namely the broken return value. Even if I could use the enums (which are not appropriate), the enum you return is useless, since it's "success*.
Now I realize why you have been complaining about the logging functions and the dc_status_t enum. It's about the return value of the dc_context_log() function itself, which indicates whether the logging was successful or not. Of course that's not what you want to return from the backend code. The return value of the logging function is nearly alway irrelevant, and you typically just ignore it:
if (failure) { ERROR(context, "Some error message."); return -1; /* or some DC_STATUS_XXX value depending on the function */ }
That's completely independent from the question about returning -1 or an enum value. The above construct works for both.
And other then being a bit more verbose with one line extra, how's that different compared to yours:
if (failure) { return report_error("Some error message."); /* Returns -1 */ }
Jef