summaryrefslogtreecommitdiff
path: root/src/debug.h
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2018-11-16 16:25:49 +0100
committerWerner Koch <wk@gnupg.org>2018-11-16 16:25:49 +0100
commit5857491a2aa7d4975100d90f1ad62c08aa345e3e (patch)
treec433d2da27e7b9f98ca783e15b00087f2ce3d6cd /src/debug.h
parent8d91c0f4cdcc26679067ae681ae12600fb450200 (diff)
downloadgpgme-5857491a2aa7d4975100d90f1ad62c08aa345e3e.tar.gz
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 <wk@gnupg.org>
Diffstat (limited to 'src/debug.h')
-rw-r--r--src/debug.h165
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", \