From 6523f3fcb9fe78650597be2710e69818e0c92b13 Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Fri, 24 Apr 2015 18:13:34 +0200 Subject: [PATCH] added LOG_TEST_GOTO_ERR and SC_TEST_GOTO_ERR Don't forget to set the error label! --- src/libopensc/log.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/libopensc/log.h b/src/libopensc/log.h index ccacefd5..e1e8c698 100644 --- a/src/libopensc/log.h +++ b/src/libopensc/log.h @@ -89,6 +89,16 @@ char * sc_dump_oid(const struct sc_object_id *oid); } while(0) #define LOG_TEST_RET(ctx, r, text) SC_TEST_RET((ctx), SC_LOG_DEBUG_NORMAL, (r), (text)) +#define SC_TEST_GOTO_ERR(ctx, level, r, text) do { \ + int _ret = (r); \ + if (_ret < 0) { \ + sc_do_log(ctx, level, __FILE__, __LINE__, __FUNCTION__, \ + "%s: %d (%s)\n", (text), _ret, sc_strerror(_ret)); \ + goto err; \ + } \ +} while(0) +#define LOG_TEST_GOTO_ERR(ctx, r, text) SC_TEST_GOTO_ERR((ctx), SC_LOG_DEBUG_NORMAL, (r), (text)) + #ifdef __cplusplus } #endif