25 #define NO_LOG_WRAPPERS
27 #include "libsigrok-internal.h"
47 static int sr_logv(
void *cb_data,
int loglevel,
const char *format,
57 static void *sr_log_cb_data = NULL;
61 #define LOGDOMAIN_MAXLEN 30
62 #define LOGDOMAIN_DEFAULT "sr: "
64 static char sr_log_domain[LOGDOMAIN_MAXLEN + 1] = LOGDOMAIN_DEFAULT;
85 if (loglevel < SR_LOG_NONE || loglevel >
SR_LOG_SPEW) {
86 sr_err(
"Invalid loglevel %d.", loglevel);
90 cur_loglevel = loglevel;
92 sr_dbg(
"libsigrok loglevel set to %d.", loglevel);
128 sr_err(
"log: %s: logdomain was NULL", __func__);
133 snprintf((
char *)&sr_log_domain, LOGDOMAIN_MAXLEN,
"%s", logdomain);
135 sr_dbg(
"Log domain set to '%s'.", (
const char *)&sr_log_domain);
151 return g_strdup((
const char *)&sr_log_domain);
172 sr_err(
"log: %s: cb was NULL", __func__);
179 sr_log_cb_data = cb_data;
200 sr_log_cb_data = NULL;
205 static int sr_logv(
void *cb_data,
int loglevel,
const char *format, va_list args)
213 if (loglevel > cur_loglevel)
216 if (sr_log_domain[0] !=
'\0')
217 fprintf(stderr,
"%s", sr_log_domain);
218 ret = vfprintf(stderr, format, args);
219 fprintf(stderr,
"\n");
225 SR_PRIV int sr_log(
int loglevel,
const char *format, ...)
230 va_start(args, format);
231 ret = sr_log_cb(sr_log_cb_data, loglevel, format, args);
238 SR_PRIV int sr_spew(
const char *format, ...)
243 va_start(args, format);
244 ret = sr_log_cb(sr_log_cb_data,
SR_LOG_SPEW, format, args);
251 SR_PRIV int sr_dbg(
const char *format, ...)
256 va_start(args, format);
257 ret = sr_log_cb(sr_log_cb_data,
SR_LOG_DBG, format, args);
264 SR_PRIV int sr_info(
const char *format, ...)
269 va_start(args, format);
270 ret = sr_log_cb(sr_log_cb_data,
SR_LOG_INFO, format, args);
277 SR_PRIV int sr_warn(
const char *format, ...)
282 va_start(args, format);
283 ret = sr_log_cb(sr_log_cb_data,
SR_LOG_WARN, format, args);
290 SR_PRIV int sr_err(
const char *format, ...)
295 va_start(args, format);
296 ret = sr_log_cb(sr_log_cb_data,
SR_LOG_ERR, format, args);
Output very noisy debug messages.
The public libsigrok header file to be used by frontends.
Output informational messages.
int sr_log_loglevel_set(int loglevel)
Set the libsigrok loglevel.
int sr_log_loglevel_get(void)
Get the libsigrok loglevel.
char * sr_log_logdomain_get(void)
Get the currently configured libsigrok logdomain.
int sr_log_logdomain_set(const char *logdomain)
Set the libsigrok logdomain string.
int(* sr_log_callback)(void *cb_data, int loglevel, const char *format, va_list args)
int sr_log_callback_set_default(void)
Set the libsigrok log callback to the default built-in one.
int sr_log_callback_set(sr_log_callback cb, void *cb_data)
Set the libsigrok log callback to the specified function.