From: Uwe Hermann Date: Wed, 25 Jan 2012 10:00:04 +0000 (+0100) Subject: srd: log: Support for setting a log domain (prefix). X-Git-Tag: libsigrokdecode-0.1.0~95 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=3a8b2e789262545fe409f95f69319b80e66aac13;p=libsigrokdecode.git srd: log: Support for setting a log domain (prefix). --- diff --git a/log.c b/log.c index a2633f4..c7fe76f 100644 --- a/log.c +++ b/log.c @@ -38,6 +38,11 @@ static srd_log_handler_t srd_handler = srd_logv; */ static void *srd_handler_data = NULL; +/* Log domain (a short string that is used as prefix for all messages). */ +#define LOGDOMAIN_MAXLEN 30 +#define LOGDOMAIN_DEFAULT "srd: " +static char srd_log_domain[LOGDOMAIN_MAXLEN + 1] = LOGDOMAIN_DEFAULT; + /** * Set the libsigrokdecode loglevel. * @@ -73,6 +78,37 @@ int srd_get_loglevel(void) return srd_loglevel; } +/** + * TODO. + * + * @param logdomain TODO + * @return TODO. + */ +int srd_log_set_logdomain(const char *logdomain) +{ + if (!logdomain) { + srd_err("log: %s: logdomain was NULL", __func__); + return SRD_ERR_ARG; + } + + /* TODO: Error handling. */ + snprintf((char *)&srd_log_domain, LOGDOMAIN_MAXLEN, "%s", logdomain); + + srd_dbg("log domain set to '%s'", (const char *)&srd_log_domain); + + return SRD_OK; +} + +/** + * TODO. + * + * @return TODO. + */ +char *srd_log_get_logdomain(void) +{ + return g_strdup((char *)srd_log_domain); +} + /** * Set the libsigrokdecode log handler to the specified function. * @@ -129,6 +165,8 @@ static int srd_logv(void *data, int loglevel, const char *format, va_list args) if (loglevel > srd_loglevel) return SRD_OK; /* TODO? */ + if (srd_log_domain[0] != '\0') + fprintf(stderr, srd_log_domain); ret = vfprintf(stderr, format, args); fprintf(stderr, "\n"); diff --git a/sigrokdecode.h b/sigrokdecode.h index 815fd74..2c9cb40 100644 --- a/sigrokdecode.h +++ b/sigrokdecode.h @@ -224,6 +224,8 @@ int srd_set_loglevel(int loglevel); int srd_get_loglevel(void); int srd_log_set_handler(srd_log_handler_t handler, void *data); int srd_log_set_default_handler(void); +int srd_log_set_logdomain(const char *logdomain); +char *srd_log_get_logdomain(void); #ifdef __cplusplus }