22 #include "libsigrokdecode-internal.h"
44 static int srd_logv(
void *cb_data,
int loglevel,
const char *format,
54 static void *srd_log_cb_data = NULL;
58 #define LOGDOMAIN_MAXLEN 30
59 #define LOGDOMAIN_DEFAULT "srd: "
61 static char srd_log_domain[LOGDOMAIN_MAXLEN + 1] = LOGDOMAIN_DEFAULT;
83 if (loglevel < SRD_LOG_NONE || loglevel >
SRD_LOG_SPEW) {
84 srd_err(
"Invalid loglevel %d.", loglevel);
88 cur_loglevel = loglevel;
90 srd_dbg(
"libsigrokdecode loglevel set to %d.", loglevel);
126 srd_err(
"log: %s: logdomain was NULL", __func__);
130 snprintf((
char *)&srd_log_domain, LOGDOMAIN_MAXLEN,
"%s", logdomain);
132 srd_dbg(
"Log domain set to '%s'.", (
const char *)&srd_log_domain);
148 return g_strdup((
const char *)&srd_log_domain);
170 srd_err(
"log: %s: cb was NULL", __func__);
177 srd_log_cb_data = cb_data;
197 srd_log_cb = srd_logv;
198 srd_log_cb_data = NULL;
203 static int srd_logv(
void *cb_data,
int loglevel,
const char *format,
212 if (loglevel > cur_loglevel)
215 if (srd_log_domain[0] !=
'\0')
216 fprintf(stderr,
"%s", srd_log_domain);
217 ret = vfprintf(stderr, format, args);
218 fprintf(stderr,
"\n");
224 SRD_PRIV int srd_log(
int loglevel,
const char *format, ...)
229 va_start(args, format);
230 ret = srd_log_cb(srd_log_cb_data, loglevel, format, args);
237 SRD_PRIV int srd_spew(
const char *format, ...)
242 va_start(args, format);
243 ret = srd_log_cb(srd_log_cb_data,
SRD_LOG_SPEW, format, args);
250 SRD_PRIV int srd_dbg(
const char *format, ...)
255 va_start(args, format);
256 ret = srd_log_cb(srd_log_cb_data,
SRD_LOG_DBG, format, args);
263 SRD_PRIV int srd_info(
const char *format, ...)
268 va_start(args, format);
269 ret = srd_log_cb(srd_log_cb_data,
SRD_LOG_INFO, format, args);
276 SRD_PRIV int srd_warn(
const char *format, ...)
281 va_start(args, format);
282 ret = srd_log_cb(srd_log_cb_data,
SRD_LOG_WARN, format, args);
289 SRD_PRIV int srd_err(
const char *format, ...)
294 va_start(args, format);
295 ret = srd_log_cb(srd_log_cb_data,
SRD_LOG_ERR, format, args);
int srd_log_logdomain_set(const char *logdomain)
Set the libsigrokdecode logdomain string.
int srd_log_loglevel_set(int loglevel)
Set the libsigrokdecode loglevel.
int srd_log_callback_set(srd_log_callback cb, void *cb_data)
Set the libsigrokdecode log callback to the specified function.
The public libsigrokdecode header file to be used by frontends.
char * srd_log_logdomain_get(void)
Get the currently configured libsigrokdecode logdomain.
int srd_log_loglevel_get(void)
Get the libsigrokdecode loglevel.
Output very noisy debug messages.
int(* srd_log_callback)(void *cb_data, int loglevel, const char *format, va_list args)
Output informational messages.
int srd_log_callback_set_default(void)
Set the libsigrokdecode log callback to the default built-in one.