From 0a2a1c695a60554a9aafe40a592ea14953d08572 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Mon, 22 Sep 2025 10:29:01 +0100 Subject: [PATCH] core: error: add function to test if an error has a particular vendor/code --- core/error.c | 14 ++++++++++++++ core/include/blue/core/error.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/core/error.c b/core/error.c index 12d6064..ede2f76 100644 --- a/core/error.c +++ b/core/error.c @@ -38,6 +38,20 @@ static void error_cleanup(void) } } +bool b_result_is( + struct b_error *err, const b_error_vendor *vendor, b_error_status_code code) +{ + if (!err) { + return false; + } + + if (err->err_vendor != vendor) { + return false; + } + + return err->err_code == code; +} + const struct b_error_vendor *b_error_vendor_get_builtin(void) { return &builtin_vendor; diff --git a/core/include/blue/core/error.h b/core/include/blue/core/error.h index 8ec3071..b052f66 100644 --- a/core/include/blue/core/error.h +++ b/core/include/blue/core/error.h @@ -330,6 +330,9 @@ BLUE_API b_error *z__b_error_caused_by(b_error *, b_error *); BLUE_API b_error *z__b_error_caused_by_b_status(b_error *, b_status); BLUE_API void z__b_error_throw(b_error *, const char *, unsigned int, const char *); +BLUE_API bool b_result_is( + b_result result, const b_error_vendor *vendor, b_error_status_code code); + BLUE_API const b_error_vendor *b_error_vendor_get_builtin(void); BLUE_API const b_error_vendor *b_error_vendor_get_errno(void); BLUE_API const b_error_definition *b_error_vendor_get_error_definition(