/* * Copyright (C) 2020-2021 Tomasz Kramkowski * SPDX-License-Identifier: MIT */ #include #include #include "pack.h" #include "trace.h" enum pack_trace pack_trace = PACK_TRACE_OFF; ATTRIBUTE_FORMAT(printf, 2, 0) static void trace(enum pack_trace level, const char *fmt, va_list va) { char *type; if (level > pack_trace) return; switch (level) { case PACK_TRACE_CALL: type = "CALL"; break; case PACK_TRACE_DEBUG: type = "DEBUG"; break; default: type = "???"; break; } fprintf(stderr, "PACK_TRACE_%s: ", type); vfprintf(stderr, fmt, va); fputc('\n', stderr); } void tr_call(const char *fmt, ...) { va_list va; va_start(va, fmt); trace(PACK_TRACE_CALL, fmt, va); va_end(va); } void tr_debug(const char *fmt, ...) { va_list va; va_start(va, fmt); trace(PACK_TRACE_DEBUG, fmt, va); va_end(va); }