aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/log.c9
-rw-r--r--include/libseat.h8
-rw-r--r--include/log.h2
-rw-r--r--libseat/libseat.c2
-rw-r--r--seatd/seatd.c3
5 files changed, 18 insertions, 6 deletions
diff --git a/common/log.c b/common/log.c
index 646480d..bea683b 100644
--- a/common/log.c
+++ b/common/log.c
@@ -12,7 +12,7 @@ const long NSEC_PER_SEC = 1000000000;
static void log_stderr(enum libseat_log_level level, const char *fmt, va_list args);
-static enum libseat_log_level current_log_level;
+static enum libseat_log_level current_log_level = LIBSEAT_LOG_LEVEL_SILENT;
static libseat_log_func current_log_handler = log_stderr;
static struct timespec start_time = {-1, -1};
static bool colored = false;
@@ -64,12 +64,11 @@ static void log_stderr(enum libseat_log_level level, const char *fmt, va_list ar
fprintf(stderr, "%s", postfix);
}
-void log_init(enum libseat_log_level level) {
+void log_init(void) {
if (start_time.tv_sec >= 0) {
return;
}
clock_gettime(CLOCK_MONOTONIC, &start_time);
- current_log_level = level;
colored = isatty(STDERR_FILENO);
}
@@ -93,3 +92,7 @@ void libseat_set_log_handler(libseat_log_func handler) {
}
current_log_handler = handler;
}
+
+void libseat_set_log_level(enum libseat_log_level level) {
+ current_log_level = level;
+}
diff --git a/include/libseat.h b/include/libseat.h
index be19c43..891cb86 100644
--- a/include/libseat.h
+++ b/include/libseat.h
@@ -160,4 +160,12 @@ typedef void (*libseat_log_func)(enum libseat_log_level level, const char *forma
*/
void libseat_set_log_handler(libseat_log_func handler);
+/*
+ * Sets the libseat log level.
+ *
+ * Only log messages whose level is lower or equal than the current log level
+ * will be processed, others will be ignored.
+ */
+void libseat_set_log_level(enum libseat_log_level level);
+
#endif
diff --git a/include/log.h b/include/log.h
index d4bfd89..9aee33c 100644
--- a/include/log.h
+++ b/include/log.h
@@ -43,7 +43,7 @@
#define log_debug(str)
#endif
-void log_init(enum libseat_log_level level);
+void log_init(void);
void _logf(enum libseat_log_level level, const char *fmt, ...) ATTRIB_PRINTF(2, 3);
#endif
diff --git a/libseat/libseat.c b/libseat/libseat.c
index 19f0e7f..dd5635b 100644
--- a/libseat/libseat.c
+++ b/libseat/libseat.c
@@ -37,7 +37,7 @@ struct libseat *libseat_open_seat(struct libseat_seat_listener *listener, void *
return NULL;
}
- log_init(LIBSEAT_LOG_LEVEL_SILENT);
+ log_init();
char *backend_type = getenv("LIBSEAT_BACKEND");
struct libseat *backend = NULL;
diff --git a/seatd/seatd.c b/seatd/seatd.c
index 71d6b2f..ce4d2bb 100644
--- a/seatd/seatd.c
+++ b/seatd/seatd.c
@@ -64,7 +64,8 @@ int main(int argc, char *argv[]) {
level = LIBSEAT_LOG_LEVEL_DEBUG;
}
}
- log_init(level);
+ log_init();
+ libseat_set_log_level(level);
const char *usage = "Usage: seatd [options]\n"
"\n"