Hi Viktor,
Viktor Dukhovni wrote:
On Wed, Jun 12, 2019 at 10:02:25AM +0100, Matt Caswell wrote:
OTOH I do find them quite helpful from a debugging perspective, e.g. when people
send in questions along the lines of "I got this error what does it mean/how do
I fix it" - although what is actually useful is usually the function name rather
than the function code itself.
Indeed what's needed is the function name. The numeric code is far
less important. On the error consumer side, the idiom I'm familiar
with is:
while ((err = ERR_get_error_line_data(&file, &line, &data, &flags)) != 0) {
ERR_error_string_n(err, buffer, sizeof(buffer));
if (flags & ERR_TXT_STRING)
printf("...: %s:%s:%d:%s", buffer, file, line, data);
else
printf("...: %s:%s:%d", buffer, file, line);
}
this makes no explicit reference to function numbers, returning the
appropriate strings. So any change is likely limited to error
producers.
Actually err encodes library, function and reason.
On the producer side, my ssl_dane library (used in Exim for example),
does depend on the function ordinal API:
https://github.com/vdukhovni/ssl_dane/blob/master/danessl.c#L52-L118
https://github.com/vdukhovni/ssl_dane/blob/master/danessl.c#L52-L118
Why you tables with functions and reasons does not use ERR_PACK ?
so that would need to change (or be longer supported) if the function
ordinals are replaced by strings, or otherwise change.