2 * Copyright (C) the libgit2 contributors. All rights reserved.
4 * This file is part of libgit2, distributed under the GNU GPL v2 with
5 * a Linking Exception. For full terms see the included COPYING file.
7 #ifndef INCLUDE_trace_h__
8 #define INCLUDE_trace_h__
10 #include <git2/trace.h>
15 struct git_trace_data
{
16 git_trace_level_t level
;
17 git_trace_callback callback
;
20 extern struct git_trace_data git_trace__data
;
22 GIT_INLINE(void) git_trace__write_fmt(
23 git_trace_level_t level
,
26 git_trace_callback callback
= git_trace__data
.callback
;
27 git_buf message
= GIT_BUF_INIT
;
31 git_buf_vprintf(&message
, fmt
, ap
);
34 callback(level
, git_buf_cstr(&message
));
36 git_buf_free(&message
);
39 #define git_trace_level() (git_trace__data.level)
40 #define git_trace(l, ...) { \
41 if (git_trace__data.level >= l && \
42 git_trace__data.callback != NULL) { \
43 git_trace__write_fmt(l, __VA_ARGS__); \
49 #define git_trace_level() ((void)0)
50 #define git_trace(lvl, ...) ((void)0)