aboutsummaryrefslogtreecommitdiffstats
path: root/src/debug.h
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2012-10-19 09:23:39 +0000
committerWerner Koch <[email protected]>2012-10-19 09:23:39 +0000
commitbd24feaa86f8154e550107990392ac9ac05e60d4 (patch)
tree6774aa2c1148896839045d2f34e753d0def5d050 /src/debug.h
parentAvoid warning about initialized but not used variable (diff)
downloadgpgme-bd24feaa86f8154e550107990392ac9ac05e60d4.tar.gz
gpgme-bd24feaa86f8154e550107990392ac9ac05e60d4.zip
Trace the use of GPG_ERR_INV_ENGINE.
* src/debug.h: Include "gpgme.h" (_gpgme_trace_gpgme_error): New. (trace_gpg_error): New macro. Use it in all files where we return GPG_ERR_INV_ENGINE; also "include debug.h" as needed. -- This is a pretty common error code but often it is hard to figure out the actual cause. With debug level 4 we now print the file name and line number where this error code is generated by gpgme. Along with the git revision printed in the first log lines, this should give us an easier way to track down the problems related to this error code.
Diffstat (limited to '')
-rw-r--r--src/debug.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/debug.h b/src/debug.h
index ead92b24..c99b7003 100644
--- a/src/debug.h
+++ b/src/debug.h
@@ -26,6 +26,9 @@
#include <stdint.h>
#endif
+#include "gpgme.h" /* Required for gpgme_error stuff. */
+
+
/* Indirect stringification, requires __STDC__ to work. */
#define STRINGIFY(v) #v
#define XSTRINGIFY(v) STRINGIFY(v)
@@ -81,6 +84,13 @@ void _gpgme_debug_buffer (int lvl, const char *const fmt,
void _gpgme_debug_frame_begin (void);
void _gpgme_debug_frame_end (void);
+static inline gpgme_error_t
+_gpgme_trace_gpgme_error (gpgme_error_t err, const char *file, int line)
+{
+ _gpgme_debug (DEBUG_ENGINE, "%s:%d: returning error: %s\n",
+ _gpgme_debug_srcname (file), line, gpgme_strerror (err));
+ return err;
+}
/* Trace support. */
@@ -262,4 +272,11 @@ void _gpgme_debug_frame_end (void);
_gpgme_debug_end (&(hlp))
#define TRACE_ENABLED(hlp) (!!(hlp))
+/* And finally a simple macro to trace the location of an error code.
+ This macro is independent of the other trace macros and may be used
+ without any preconditions. */
+#define trace_gpg_error(e) \
+ _gpgme_trace_gpgme_error (gpg_error (e), __FILE__, __LINE__)
+
+
#endif /* DEBUG_H */