Blame src/trace.h

Packit Service 20376f
/*
Packit Service 20376f
 * Copyright (C) the libgit2 contributors. All rights reserved.
Packit Service 20376f
 *
Packit Service 20376f
 * This file is part of libgit2, distributed under the GNU GPL v2 with
Packit Service 20376f
 * a Linking Exception. For full terms see the included COPYING file.
Packit Service 20376f
 */
Packit Service 20376f
#ifndef INCLUDE_trace_h__
Packit Service 20376f
#define INCLUDE_trace_h__
Packit Service 20376f
Packit Service 20376f
#include <git2/trace.h>
Packit Service 20376f
#include "buffer.h"
Packit Service 20376f
Packit Service 20376f
#ifdef GIT_TRACE
Packit Service 20376f
Packit Service 20376f
struct git_trace_data {
Packit Service 20376f
	git_trace_level_t level;
Packit Service 20376f
	git_trace_callback callback;
Packit Service 20376f
};
Packit Service 20376f
Packit Service 20376f
extern struct git_trace_data git_trace__data;
Packit Service 20376f
Packit Service 20376f
GIT_INLINE(void) git_trace__write_fmt(
Packit Service 20376f
	git_trace_level_t level,
Packit Service 20376f
	const char *fmt, ...)
Packit Service 20376f
{
Packit Service 20376f
	git_trace_callback callback = git_trace__data.callback;
Packit Service 20376f
	git_buf message = GIT_BUF_INIT;
Packit Service 20376f
	va_list ap;
Packit Service 20376f
Packit Service 20376f
	va_start(ap, fmt);
Packit Service 20376f
	git_buf_vprintf(&message, fmt, ap);
Packit Service 20376f
	va_end(ap);
Packit Service 20376f
Packit Service 20376f
	callback(level, git_buf_cstr(&message));
Packit Service 20376f
Packit Service 20376f
	git_buf_free(&message);
Packit Service 20376f
}
Packit Service 20376f
Packit Service 20376f
#define git_trace_level()		(git_trace__data.level)
Packit Service 20376f
#define git_trace(l, ...)		{ \
Packit Service 20376f
									if (git_trace__data.level >= l && \
Packit Service 20376f
										git_trace__data.callback != NULL) { \
Packit Service 20376f
										git_trace__write_fmt(l, __VA_ARGS__); \
Packit Service 20376f
									} \
Packit Service 20376f
								}
Packit Service 20376f
Packit Service 20376f
#else
Packit Service 20376f
Packit Service 20376f
GIT_INLINE(void) git_trace__null(
Packit Service 20376f
	git_trace_level_t level,
Packit Service 20376f
	const char *fmt, ...)
Packit Service 20376f
{
Packit Service 20376f
	GIT_UNUSED(level);
Packit Service 20376f
	GIT_UNUSED(fmt);
Packit Service 20376f
}
Packit Service 20376f
Packit Service 20376f
#define git_trace_level()		((void)0)
Packit Service 20376f
#define git_trace			git_trace__null
Packit Service 20376f
Packit Service 20376f
#endif
Packit Service 20376f
Packit Service 20376f
#endif