X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=log.c;h=c89a74bce8506a544e92f61484494be0ba8fd653;hp=a2633f43d91fb1f6d5724c1b4abc6e67a755095d;hb=7a1712c4fd07f64222079acd5ec3fa3348a5cb15;hpb=66e4c27c13b2e7ba857c9c9bd9a33a8b3a5cb0fa diff --git a/log.c b/log.c index a2633f4..c89a74b 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. * @@ -58,7 +63,7 @@ int srd_set_loglevel(int loglevel) srd_loglevel = loglevel; - srd_dbg("srd: loglevel set to %d", loglevel); + srd_dbg("libsigrokdecode loglevel set to %d.", loglevel); return SRD_OK; } @@ -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");