diff options
author | Werner Koch <[email protected]> | 2018-11-16 15:25:49 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2018-11-16 15:25:49 +0000 |
commit | 5857491a2aa7d4975100d90f1ad62c08aa345e3e (patch) | |
tree | c433d2da27e7b9f98ca783e15b00087f2ce3d6cd /src/debug.h | |
parent | Add SPDX identifiers to most source files (diff) | |
download | gpgme-5857491a2aa7d4975100d90f1ad62c08aa345e3e.tar.gz gpgme-5857491a2aa7d4975100d90f1ad62c08aa345e3e.zip |
core: Simplify the trace maros by using variadics.
* src/debug.h (TRACE_BEG, TRACE_LOG, TRACE_SUC): Use variadic macros
and remove the TRACE_BEG1 et al. Change all users to always pass a
format string.
(TRACE): Ditto.
* src/debug.c (_gpgme_debugf): New.
* configure.ac <GCC>: Add -Wno-format-zero-length.
--
This makes it easier for use to enable format checks. The zero-length
format is required to allow for an empty format due to the comman
problematic of __VA_ARGS__.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'src/debug.h')
-rw-r--r-- | src/debug.h | 165 |
1 files changed, 30 insertions, 135 deletions
diff --git a/src/debug.h b/src/debug.h index 77fec559..9f9fd5df 100644 --- a/src/debug.h +++ b/src/debug.h @@ -69,6 +69,10 @@ void _gpgme_debug_subsystem_init (void); /* Log the formatted string FORMAT at debug level LEVEL or higher. */ int _gpgme_debug (int level, const char *format, ...); +int _gpgme_debugf (int level, int mode, + const char *func, const char *tagname, const char *tagvalue, + const char *format, ...) GPGRT_ATTR_PRINTF(6,7); + /* Start a new debug line in *LINE, logged at level LEVEL or higher, and starting with the formatted string FORMAT. */ @@ -109,160 +113,51 @@ _gpgme_trace_gpgme_error (gpgme_error_t err, const char *file, int line) void *_gpgme_trace_tag = (void *) (uintptr_t) tag; \ _gpgme_debug_frame_begin () -#define TRACE_BEG(lvl, name, tag) \ - _TRACE (lvl, name, tag); \ - _gpgme_debug (_gpgme_trace_level, "%s: enter: %s=%p\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag) -#define TRACE_BEG0(lvl, name, tag, fmt) \ - _TRACE (lvl, name, tag); \ - _gpgme_debug (_gpgme_trace_level, "%s: enter: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag) -#define TRACE_BEG1(lvl, name, tag, fmt, arg1) \ +#define TRACE_BEG(lvl, name, tag, ...) \ _TRACE (lvl, name, tag); \ - _gpgme_debug (_gpgme_trace_level, "%s: enter: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1) -#define TRACE_BEG2(lvl, name, tag, fmt, arg1, arg2) \ - _TRACE (lvl, name, tag); \ - _gpgme_debug (_gpgme_trace_level, "%s: enter: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1, arg2) -#define TRACE_BEG3(lvl, name, tag, fmt, arg1, arg2, arg3) \ - _TRACE (lvl, name, tag); \ - _gpgme_debug (_gpgme_trace_level, "%s: enter: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1, arg2, arg3) -#define TRACE_BEG4(lvl, name, tag, fmt, arg1, arg2, arg3, arg4) \ - _TRACE (lvl, name, tag); \ - _gpgme_debug (_gpgme_trace_level, "%s: enter: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1, arg2, arg3, arg4) -#define TRACE_BEG5(lvl, name, tag, fmt, arg1, arg2, arg3, arg4, arg5) \ - _TRACE (lvl, name, tag); \ - _gpgme_debug (_gpgme_trace_level, "%s: enter: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1, arg2, arg3, arg4, arg5) -#define TRACE_BEG7(lvl, name, tag, fmt, arg1, arg2, arg3, arg4, \ - arg5, arg6, arg7) \ - _TRACE (lvl, name, tag); \ - _gpgme_debug (_gpgme_trace_level, "%s: enter: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1, arg2, arg3, arg4, arg5, arg6, arg7) -#define TRACE_BEG8(lvl, name, tag, fmt, arg1, arg2, arg3, arg4, \ - arg5, arg6, arg7, arg8) \ - _TRACE (lvl, name, tag); \ - _gpgme_debug (_gpgme_trace_level, "%s: enter: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) - -#define TRACE(lvl, name, tag) \ - _gpgme_debug_frame_begin (), \ - _gpgme_debug (lvl, "%s: call: %s=%p\n", \ - name, STRINGIFY (tag), (void *) (uintptr_t) tag), \ - _gpgme_debug_frame_end () -#define TRACE0(lvl, name, tag, fmt) \ - _gpgme_debug_frame_begin (), \ - _gpgme_debug (lvl, "%s: call: %s=%p, " fmt "\n", \ - name, STRINGIFY (tag), (void *) (uintptr_t) tag), \ - _gpgme_debug_frame_end () -#define TRACE1(lvl, name, tag, fmt, arg1) \ - _gpgme_debug_frame_begin (), \ - _gpgme_debug (lvl, "%s: call: %s=%p, " fmt "\n", \ - name, STRINGIFY (tag), (void *) (uintptr_t) tag, arg1), \ - _gpgme_debug_frame_end () -#define TRACE2(lvl, name, tag, fmt, arg1, arg2) \ - _gpgme_debug_frame_begin (), \ - _gpgme_debug (lvl, "%s: call: %s=%p, " fmt "\n", \ - name, STRINGIFY (tag), (void *) (uintptr_t) tag, arg1, \ - arg2), _gpgme_debug_frame_end () -#define TRACE3(lvl, name, tag, fmt, arg1, arg2, arg3) \ - _gpgme_debug_frame_begin (), \ - _gpgme_debug (lvl, "%s: call: %s=%p, " fmt "\n", \ - name, STRINGIFY (tag), (void *) (uintptr_t) tag, arg1, \ - arg2, arg3), _gpgme_debug_frame_end () -#define TRACE6(lvl, name, tag, fmt, arg1, arg2, arg3, arg4, arg5, arg6) \ + _gpgme_debugf (_gpgme_trace_level, 1, \ + _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ + __VA_ARGS__) + +#define TRACE(lvl, name, tag, ...) \ _gpgme_debug_frame_begin (), \ - _gpgme_debug (lvl, "%s: call: %s=%p, " fmt "\n", \ - name, STRINGIFY (tag), (void *) (uintptr_t) tag, arg1, \ - arg2, arg3, arg4, arg5, arg6), \ - _gpgme_debug_frame_end () + _gpgme_debugf (lvl, 0, \ + name, STRINGIFY (tag), (void *) (uintptr_t) tag, \ + __VA_ARGS__), \ + _gpgme_debug_frame_end () #define TRACE_ERR(err) \ - err == 0 ? (TRACE_SUC ()) : \ + err == 0 ? (TRACE_SUC ("")) : \ (_gpgme_debug (_gpgme_trace_level, "%s:%d: error: %s <%s>\n", \ _gpgme_trace_func, __LINE__, gpgme_strerror (err), \ gpgme_strsource (err)), _gpgme_debug_frame_end (), (err)) + + /* The cast to void suppresses GCC warnings. */ #define TRACE_SYSRES(res) \ - res >= 0 ? ((void) (TRACE_SUC1 ("result=%i", res)), (res)) : \ - (_gpgme_debug (_gpgme_trace_level, "%s: error: %s\n", \ - _gpgme_trace_func, strerror (errno)), _gpgme_debug_frame_end (), (res)) + res >= 0 ? ((void) (TRACE_SUC ("result=%i", res)), (res)) : \ + (_gpgme_debug (_gpgme_trace_level, "%s: error: %s\n", \ + _gpgme_trace_func, strerror (errno)), \ + _gpgme_debug_frame_end (), (res)) #define TRACE_SYSERR(res) \ - res == 0 ? ((void) (TRACE_SUC1 ("result=%i", res)), (res)) : \ + res == 0 ? ((void) (TRACE_SUC ("result=%i", res)), (res)) : \ (_gpgme_debug (_gpgme_trace_level, "%s: error: %s\n", \ _gpgme_trace_func, strerror (res)), \ _gpgme_debug_frame_end (), (res)) #define TRACE_SYSERR_NR(res) \ - do { res == 0 ? ((void) (TRACE_SUC1 ("result=%i", res)), (res)) : \ + do { res == 0 ? ((void) (TRACE_SUC ("result=%i", res)), (res)) : \ (_gpgme_debug (_gpgme_trace_level, "%s: error: %s\n", \ _gpgme_trace_func, strerror (res)), \ _gpgme_debug_frame_end ()); } while (0) -#define TRACE_SUC() \ - _gpgme_debug (_gpgme_trace_level, "%s: leave\n", \ - _gpgme_trace_func), _gpgme_debug_frame_end () -#define TRACE_SUC0(fmt) \ - _gpgme_debug (_gpgme_trace_level, "%s: leave: " fmt "\n", \ - _gpgme_trace_func), _gpgme_debug_frame_end () -#define TRACE_SUC1(fmt, arg1) \ - _gpgme_debug (_gpgme_trace_level, "%s: leave: " fmt "\n", \ - _gpgme_trace_func, arg1), _gpgme_debug_frame_end () -#define TRACE_SUC2(fmt, arg1, arg2) \ - _gpgme_debug (_gpgme_trace_level, "%s: leave: " fmt "\n", \ - _gpgme_trace_func, arg1, arg2), _gpgme_debug_frame_end () -#define TRACE_SUC3(fmt, arg1, arg2, arg3) \ - _gpgme_debug (_gpgme_trace_level, "%s: leave: " fmt "\n", \ - _gpgme_trace_func, arg1, arg2, arg3), _gpgme_debug_frame_end () -#define TRACE_SUC4(fmt, arg1, arg2, arg3, arg4) \ - _gpgme_debug (_gpgme_trace_level, "%s: leave: " fmt "\n", \ - _gpgme_trace_func, arg1, arg2, arg3, arg4), \ - _gpgme_debug_frame_end () -#define TRACE_SUC5(fmt, arg1, arg2, arg3, arg4, arg5) \ - _gpgme_debug (_gpgme_trace_level, "%s: leave: " fmt "\n", \ - _gpgme_trace_func, arg1, arg2, arg3, arg4, arg5), \ - _gpgme_debug_frame_end () -#define TRACE_SUC6(fmt, arg1, arg2, arg3, arg4, arg5, arg6) \ - _gpgme_debug (_gpgme_trace_level, "%s: leave: " fmt "\n", \ - _gpgme_trace_func, arg1, arg2, arg3, arg4, arg5, arg6), \ - _gpgme_debug_frame_end () +#define TRACE_SUC(...) \ + _gpgme_debugf (_gpgme_trace_level, 3, _gpgme_trace_func, NULL, NULL, \ + __VA_ARGS__), _gpgme_debug_frame_end () -#define TRACE_LOG(fmt) \ - _gpgme_debug (_gpgme_trace_level, "%s: check: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag) -#define TRACE_LOG1(fmt, arg1) \ - _gpgme_debug (_gpgme_trace_level, "%s: check: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1) -#define TRACE_LOG2(fmt, arg1, arg2) \ - _gpgme_debug (_gpgme_trace_level, "%s: check: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1, arg2) -#define TRACE_LOG3(fmt, arg1, arg2, arg3) \ - _gpgme_debug (_gpgme_trace_level, "%s: check: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1, arg2, arg3) -#define TRACE_LOG4(fmt, arg1, arg2, arg3, arg4) \ - _gpgme_debug (_gpgme_trace_level, "%s: check: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1, arg2, arg3, arg4) -#define TRACE_LOG5(fmt, arg1, arg2, arg3, arg4, arg5) \ - _gpgme_debug (_gpgme_trace_level, "%s: check: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1, arg2, arg3, arg4, arg5) -#define TRACE_LOG6(fmt, arg1, arg2, arg3, arg4, arg5, arg6) \ - _gpgme_debug (_gpgme_trace_level, "%s: check: %s=%p, " fmt "\n", \ - _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ - arg1, arg2, arg3, arg4, arg5, arg6) +#define TRACE_LOG(...) \ + _gpgme_debugf (_gpgme_trace_level, 2, \ + _gpgme_trace_func, _gpgme_trace_tagname, _gpgme_trace_tag, \ + __VA_ARGS__) #define TRACE_LOGBUF(buf, len) \ _gpgme_debug_buffer (_gpgme_trace_level, "%s: check: %s", \ |