aboutsummaryrefslogtreecommitdiffstats
path: root/src/gpgrt-int.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpgrt-int.h')
-rw-r--r--src/gpgrt-int.h41
1 files changed, 26 insertions, 15 deletions
diff --git a/src/gpgrt-int.h b/src/gpgrt-int.h
index e1cf50b..701e1d4 100644
--- a/src/gpgrt-int.h
+++ b/src/gpgrt-int.h
@@ -51,31 +51,33 @@ gpg_err_code_t _gpgrt_yield (void);
/* Trace support. */
-void _gpgrt_internal_trace_begin (const char *mod, const char *file, int line);
-void _gpgrt_internal_trace (const char *format,
- ...) GPGRT_ATTR_PRINTF(1,2);
-void _gpgrt_internal_trace_errno (const char *format,
- ...) GPGRT_ATTR_PRINTF(1,2);
-void _gpgrt_internal_trace_printf (const char *format,
- ...) GPGRT_ATTR_PRINTF(1,2);
-void _gpgrt_internal_trace_end (void);
-
+/* The trace macro is used this way:
+ * trace (("enter - foo=%d bar=%s", foo, bar));
+ * Note the double parenthesis, they are important.
+ * To append the current errno to the output, use
+ * trace_errno (EXTPR,("leave - baz=%d", faz));
+ * If EXPR evaluates to true the output of strerror (errno)
+ * is appended to the output. Note that the trace function does
+ * not modify ERRNO. To enable tracing you need to have this
+ * #define ENABLE_TRACING "modulename"
+ * before you include gpgrt-int.h.
+ */
#ifdef ENABLE_TRACING
# define trace(X) do { \
_gpgrt_internal_trace_begin \
- (ENABLE_TRACING, __func__, __LINE__); \
+ (ENABLE_TRACING, __func__, __LINE__, 0); \
_gpgrt_internal_trace X; \
_gpgrt_internal_trace_end (); \
} while (0)
-# define trace_errno(X) do { \
+# define trace_errno(C,X) do { \
_gpgrt_internal_trace_begin \
- (ENABLE_TRACING, __func__, __LINE__); \
- _gpgrt_internal_trace_errno X; \
+ (ENABLE_TRACING, __func__, __LINE__, (C)); \
+ _gpgrt_internal_trace X; \
_gpgrt_internal_trace_end (); \
} while (0)
# define trace_start(X) do { \
_gpgrt_internal_trace_begin \
- (ENABLE_TRACING, __func__, __LINE__); \
+ (ENABLE_TRACING, __func__, __LINE__, 0); \
_gpgrt_internal_trace_printf X; \
} while (0)
# define trace_append(X) do { \
@@ -87,12 +89,21 @@ void _gpgrt_internal_trace_end (void);
} while (0)
#else
# define trace(X) do { } while (0)
-# define trace_errno(X) do { } while (0)
+# define trace_errno(C,X) do { } while (0)
# define trace_start(X) do { } while (0)
# define trace_append(X) do { } while (0)
# define trace_finish(X) do { } while (0)
#endif /*!ENABLE_TRACING*/
+void _gpgrt_internal_trace_begin (const char *mod, const char *file, int line,
+ int with_errno);
+void _gpgrt_internal_trace (const char *format,
+ ...) GPGRT_ATTR_PRINTF(1,2);
+void _gpgrt_internal_trace_printf (const char *format,
+ ...) GPGRT_ATTR_PRINTF(1,2);
+void _gpgrt_internal_trace_end (void);
+
+
/* Local definitions for estream. */