Hi Oswald
On 01/10/2024 16:29, Oswald Buddenhagen wrote:
On Mon, Sep 30, 2024 at 10:03:52PM +0000, brian m. carlson wrote:
+ case GIT_ERR_MULTIPLE:
+ strbuf_addf(buf, _("multiple errors:\n"));
+ for (size_t i = 0; i < me->count; i++) {
+ git_error_strbuf(buf, me->errs[i]);
+ strbuf_addstr(buf, "\n");
+ }
+ }
ah. i was wondering how you'd address this ("this" being non-fatal
errors piling up), as i'm facing the same problem in a project of mine.
the problem is that one can either impose a very rigid formatting (as
you do here), or provide formatting options, which can get arbitrarily
complex. so i wonder whether one shouldn't pursue a hybrid approach
instead: singular return values for low-level functions that either work
or fail fatally, and error callbacks for higher-level functionality?
That's a good point - the rigid formatting is easy to implement but is
not ideal from the user's point of view. Ideally we'd compose a coherent
message with the data from the various errors but as you say that's not
trivial. I wonder if there are any good examples out there that we could
use as inspiration. The ones I'm aware of (rust's anyhow and svn's
svn_error_compose) go for a rigid approach. Glib's GError punts the
problem entirely by forbidding multiple errors.
Best Wishes
Phillip
btw, the switch misses breaks.