@@ -21,31 +21,53 @@ struct git_trace_data {
2121
2222extern struct git_trace_data git_trace__data ;
2323
24- GIT_INLINE (void ) git_trace__write_fmt (
24+ GIT_INLINE (void ) git_trace__vwrite_fmt (
2525 git_trace_level_t level ,
26- const char * fmt , ... )
26+ const char * fmt , va_list ap )
2727{
2828 git_trace_cb callback = git_trace__data .callback ;
2929 git_buf message = GIT_BUF_INIT ;
30- va_list ap ;
3130
32- va_start (ap , fmt );
3331 git_buf_vprintf (& message , fmt , ap );
34- va_end (ap );
3532
3633 callback (level , git_buf_cstr (& message ));
3734
3835 git_buf_dispose (& message );
3936}
4037
38+ GIT_INLINE (void ) git_trace__write_fmt (
39+ git_trace_level_t level ,
40+ const char * fmt , ...)
41+ {
42+ va_list ap ;
43+
44+ va_start (ap , fmt );
45+ git_trace__vwrite_fmt (level , fmt , ap );
46+ va_end (ap );
47+ }
48+
4149#define git_trace_level () (git_trace__data.level)
50+ /* Varadic macros are a C99 feature */
51+ #if defined(__STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L
4252#define git_trace (l , ...) { \
4353 if (git_trace__data.level >= l && \
4454 git_trace__data.callback != NULL) { \
4555 git_trace__write_fmt(l, __VA_ARGS__); \
4656 } \
4757 }
58+ #else
59+ GIT_INLINE (void ) git_trace (git_trace_level_t level , const char * fmt , ...)
60+ {
61+ if (git_trace__data .level >= level &&
62+ git_trace__data .callback != NULL ) {
63+ va_list ap ;
4864
65+ va_start (ap , fmt );
66+ git_trace__vwrite_fmt (level , fmt , ap );
67+ va_end (ap );
68+ }
69+ }
70+ #endif
4971#else
5072
5173GIT_INLINE (void ) git_trace__null (
0 commit comments