srd: log: Support for setting a log domain (prefix).
authorUwe Hermann <uwe@hermann-uwe.de>
Wed, 25 Jan 2012 10:00:04 +0000 (11:00 +0100)
committerUwe Hermann <uwe@hermann-uwe.de>
Thu, 26 Jan 2012 00:03:54 +0000 (01:03 +0100)
log.c
sigrokdecode.h

diff --git a/log.c b/log.c
index a2633f43d91fb1f6d5724c1b4abc6e67a755095d..c7fe76f2065784faf378384ffc5dc7fb206d020c 100644 (file)
--- 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;
 
  */
 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.
  *
 /**
  * Set the libsigrokdecode loglevel.
  *
@@ -73,6 +78,37 @@ int srd_get_loglevel(void)
        return srd_loglevel;
 }
 
        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.
  *
 /**
  * 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 (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");
 
        ret = vfprintf(stderr, format, args);
        fprintf(stderr, "\n");
 
index 815fd74e14e6579afee5b1bca72027b92a069cd0..2c9cb40128f7b19eb787b73c37f49e286b0f477f 100644 (file)
@@ -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_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
 }
 
 #ifdef __cplusplus
 }