aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Oliver <contact@pauloliver.dev>2026-05-25 06:36:03 +0200
committerPaul Oliver <contact@pauloliver.dev>2026-05-25 06:36:03 +0200
commit65ce077940bc5916b7c67fde1856b112ba38de39 (patch)
tree5dbd304fa2573de91f0264a51d8f6d010682d41c
parent43764cc5172156d02d88a042c31f0c9d204cf0e6 (diff)
Makes data client terminate nicely when signal is received
-rw-r--r--core/logger.c7
-rw-r--r--data/client.cpp11
2 files changed, 14 insertions, 4 deletions
diff --git a/core/logger.c b/core/logger.c
index efff3dc..4ff7562 100644
--- a/core/logger.c
+++ b/core/logger.c
@@ -13,8 +13,6 @@ enum LogLevel {
WARN,
};
-char g_log_buff[LOG_LINE_SIZE];
-
void log_msg_to_buff(char *out, int size, enum LogLevel level, bool colored, const char *format, va_list args) {
assert(out);
assert(size);
@@ -78,8 +76,9 @@ void log_msg(enum LogLevel level, bool colored, const char *format, va_list args
assert(level == INFO || level == WARN);
assert(format);
- log_msg_to_buff(g_log_buff, LOG_LINE_SIZE, level, colored, format, args);
- printf("\r%s\n", g_log_buff);
+ char buff[LOG_LINE_SIZE];
+ log_msg_to_buff(buff, LOG_LINE_SIZE, level, colored, format, args);
+ printf("\r%s\n", buff);
}
void log_info(const char *format, ...) {
diff --git a/data/client.cpp b/data/client.cpp
index 74f2bc5..f0ffa6a 100644
--- a/data/client.cpp
+++ b/data/client.cpp
@@ -5,6 +5,7 @@
#include <implot.h>
#include <limits.h>
#include <math.h>
+#include <signal.h>
#include <initializer_list>
@@ -368,6 +369,13 @@ void gui_print(void) {
// ----------------------------------------------------------------------------
// Main functions
// ----------------------------------------------------------------------------
+void sig_handler(int signo) {
+ (void)signo;
+
+ log_warn("Signal received, will stop SALIS data client...");
+ glfwSetWindowShouldClose(g_window, GLFW_TRUE);
+}
+
void glfw_error_callback(int error, const char* description) {
log_warn("GLFW error %d: %s", error, description);
}
@@ -454,6 +462,9 @@ int main(int argc, char **argv) {
(void)argc;
(void)argv;
+ signal(SIGINT, sig_handler);
+ signal(SIGTERM, sig_handler);
+
log_info("Starting SALIS data client");
log_info("Initializing GLFW");