/* * Copyright 2017 Ettus Research (National Instruments Corp) * * SPDX-License-Identifier: GPL-3.0-or-later */ #include #include #include void UHD_API _uhd_log(const uhd_log_severity_level_t log_level, const char* filename, const int lineno, const char* component, const char* format, ...) { int size = 0; char* c_str = NULL; va_list ap; /* figure out size */ va_start(ap, format); size = vsnprintf(c_str, size, format, ap); va_end(ap); if (size < 0) { return; } /* trailing '\0' */ size++; c_str = (char*)malloc(size); if (!c_str) { return; } va_start(ap, format); size = vsnprintf(c_str, size, format, ap); if (size < 0) { goto out_free; } va_end(ap); try { uhd::_log::log(static_cast(log_level), filename, unsigned(lineno), component, std::this_thread::get_id()) << c_str; } catch (...) { } out_free: free(c_str); return; }