From a3f4b35766355b8aade88a302586060562995547 Mon Sep 17 00:00:00 2001
From: Georges Da Costa <dacosta@irit.fr>
Date: Wed, 21 May 2025 14:10:41 +0200
Subject: [PATCH] Converts the code to compile on g++

---
 makefile              | 7 +++++--
 src/counters.c        | 2 +-
 src/counters.h        | 2 +-
 src/display_manager.c | 2 +-
 src/libmojitos.c      | 8 ++++----
 src/libmojitos.h      | 2 +-
 src/likwid.c          | 2 +-
 src/likwid.h          | 2 +-
 src/load.c            | 2 +-
 src/load.h            | 2 +-
 src/manager.h         | 2 +-
 src/memory.c          | 2 +-
 src/memory.h          | 2 +-
 src/memory_counters.c | 2 +-
 src/memory_counters.h | 2 +-
 src/mojitos.c         | 2 +-
 src/network.c         | 2 +-
 src/network.h         | 2 +-
 src/rapl.c            | 2 +-
 src/rapl.h            | 2 +-
 src/temperature.c     | 2 +-
 src/temperature.h     | 2 +-
 22 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/makefile b/makefile
index a8d0318..0714022 100644
--- a/makefile
+++ b/makefile
@@ -11,8 +11,11 @@ BIN = mojitos
 BINP = mojitos_prometeus
 PREFIX = /usr/local
 
-CC = g++
-CPPFLAGS = -std=c++20 -Wall -Wextra -Wpedantic -Wno-unused-function -I./lib $(NVML_IFLAGS)
+# specific flags for g++
+# CC = g++
+# CPPFLAGS = -std=c++20 -Wall -Wno-error=write-strings -Wextra -Wpedantic -Wno-unused-function -I./lib $(NVML_IFLAGS)
+
+#works also with clang
 CC = gcc
 CPPFLAGS = -std=gnu99 -Wall -Wextra -Wpedantic -Wno-unused-function -I./lib $(NVML_IFLAGS)
 
diff --git a/src/counters.c b/src/counters.c
index 1266a07..5dd28ad 100644
--- a/src/counters.c
+++ b/src/counters.c
@@ -230,7 +230,7 @@ unsigned int get_counters(uint64_t *results, void *ptr)
     return state->nbperf;
 }
 
-void label_counters(char **labels, void *ptr)
+void label_counters(const char **labels, void *ptr)
 {
     Counter *state = (Counter *) ptr;
 
diff --git a/src/counters.h b/src/counters.h
index 3186f1d..4f082fe 100644
--- a/src/counters.h
+++ b/src/counters.h
@@ -21,7 +21,7 @@
 unsigned int init_counters(char *, void **);
 unsigned int get_counters(uint64_t *results, void *);
 void clean_counters(void *);
-void label_counters(char **labels, void *);
+void label_counters(const char **labels, void *);
 void *show_all_counters(void *, size_t);
 
 Sensor counters = {
diff --git a/src/display_manager.c b/src/display_manager.c
index d485f07..9a7f6e1 100644
--- a/src/display_manager.c
+++ b/src/display_manager.c
@@ -8,7 +8,7 @@
 extern FILE *output;
 extern char* output_option;
 
-void init_manager(char** labels, int nb_sensors, int stat_mode) {
+void init_manager(const char** labels, int nb_sensors, int stat_mode) {
   if (output_option != NULL) {
     if ((output = fopen(output_option, "wb")) == NULL) {
       perror("fopen");
diff --git a/src/libmojitos.c b/src/libmojitos.c
index 89f3e76..bd52068 100644
--- a/src/libmojitos.c
+++ b/src/libmojitos.c
@@ -9,7 +9,7 @@
 #include "libmojitos.h"
 
 typedef unsigned int (*initializer_t)(char *, void **);
-typedef void (*labeler_t)(char **, void *);
+typedef void (*labeler_t)(const char **, void *);
 typedef unsigned int (*getter_t)(uint64_t *, void *);
 typedef void (*cleaner_t)(void *);
 
@@ -35,7 +35,7 @@ Optparse _moj_opts[NB_SENSOR_OPT + 1];
   
 unsigned int nb_sources = 0;
 unsigned int nb_sensors = 0; // might have multiple sensors per source
-char **labels = NULL;
+const char **labels = NULL;
 uint64_t *values = NULL;
 void **states = NULL;
 getter_t *getter = NULL;
@@ -63,7 +63,7 @@ void add_source(Sensor *cpt, char *arg)
     cleaner = (cleaner_t*) realloc(cleaner, nb_sources * sizeof(void *));
     cleaner[nb_sources - 1] = clean;
 
-    labels = (char**) realloc(labels, (nb_sensors + nb) * sizeof(char *));
+    labels = (const char**) realloc(labels, (nb_sensors + nb) * sizeof(char *));
     labeler(labels + nb_sensors, states[nb_sources - 1]);
 
     values = (uint64_t*) realloc(values, (nb_sensors + nb) * sizeof(uint64_t));
@@ -115,7 +115,7 @@ void moj_clean(void) {
     }
 }
 
-char **moj_labels(void) {
+const char **moj_labels(void) {
   return labels;
 }
 
diff --git a/src/libmojitos.h b/src/libmojitos.h
index 94347e2..2ee2448 100644
--- a/src/libmojitos.h
+++ b/src/libmojitos.h
@@ -1,4 +1,4 @@
 int moj_init(char** argv);
 uint64_t* moj_get_values(void);
 void moj_clean(void);
-char **moj_labels(void);
+const char **moj_labels(void);
diff --git a/src/likwid.c b/src/likwid.c
index 0f72bbc..9ce0027 100644
--- a/src/likwid.c
+++ b/src/likwid.c
@@ -61,7 +61,7 @@ void _get_likwid(Likwid *likwid, uint64_t *values)
   }
 }
 
-void label_likwid(char **labels, void *ptr)
+void label_likwid(const char **labels, void *ptr)
 {
     Likwid *state = (Likwid *) ptr;
 
diff --git a/src/likwid.h b/src/likwid.h
index 7a529da..c2e6b75 100644
--- a/src/likwid.h
+++ b/src/likwid.h
@@ -21,7 +21,7 @@
 unsigned int init_likwid(char *, void **);
 unsigned int get_likwid(uint64_t *results, void *);
 void clean_likwid(void *);
-void label_likwid(char **labels, void *);
+void label_likwid(const char **labels, void *);
 void *show_all_likwid(void *, size_t);
 
 Sensor likwid = {
diff --git a/src/load.c b/src/load.c
index a38886d..c568499 100644
--- a/src/load.c
+++ b/src/load.c
@@ -98,7 +98,7 @@ char *_labels[LOAD_VALUES_SIZE] = {
     "user", "nice", "system", "idle", "iowait", "irq",
     "softirq", "steal", "guest", "guest_nice"
 };
-void label_load(char **labels, void *none)
+void label_load(const char **labels, void *none)
 {
     UNUSED(none);
 
diff --git a/src/load.h b/src/load.h
index 333f778..38d1395 100644
--- a/src/load.h
+++ b/src/load.h
@@ -21,7 +21,7 @@
 unsigned int init_load(char *, void **);
 unsigned int get_load(uint64_t *results, void *);
 void clean_load(void *);
-void label_load(char **labels, void *);
+void label_load(const char **labels, void *);
 
 Sensor load = {
     .init = init_load,
diff --git a/src/manager.h b/src/manager.h
index 65ab8c8..d6f9885 100644
--- a/src/manager.h
+++ b/src/manager.h
@@ -1,4 +1,4 @@
-void init_manager(char** labels, int nb_sensors, int stat_mode);
+void init_manager(const char** labels, int nb_sensors, int stat_mode);
 void use_manager(struct timespec ts,
 		 const uint64_t* values, int nb_sensors,
 		 uint64_t stat_data);
diff --git a/src/memory.c b/src/memory.c
index 3356a82..799cf19 100644
--- a/src/memory.c
+++ b/src/memory.c
@@ -83,7 +83,7 @@ unsigned int get_memory(uint64_t *results, void *none)
     return MEMORY_COUNT;
 }
 
-void label_memory(char **labels, void *none)
+void label_memory(const char **labels, void *none)
 {
     UNUSED(none);
     memcpy(labels, memory_labels, sizeof(char *) * MEMORY_COUNT);
diff --git a/src/memory.h b/src/memory.h
index 8a73fac..5a73940 100644
--- a/src/memory.h
+++ b/src/memory.h
@@ -21,7 +21,7 @@
 unsigned int init_memory(char *, void **);
 unsigned int get_memory(uint64_t *results, void *);
 void clean_memory(void *);
-void label_memory(char **labels, void *);
+void label_memory(const char **labels, void *);
 
 
 Sensor memory = {
diff --git a/src/memory_counters.c b/src/memory_counters.c
index 564fb9c..8b52fe5 100644
--- a/src/memory_counters.c
+++ b/src/memory_counters.c
@@ -101,7 +101,7 @@ unsigned int get_memory_counters(uint64_t *results, void *ptr)
     return counters->count;
 }
 
-void label_memory_counters(char **labels, void *ptr)
+void label_memory_counters(const char **labels, void *ptr)
 {
     MemoryCounters *counters = (MemoryCounters *)ptr;
     for (unsigned int i = 0; i < counters->count; i++) {
diff --git a/src/memory_counters.h b/src/memory_counters.h
index 27198fa..11514e2 100644
--- a/src/memory_counters.h
+++ b/src/memory_counters.h
@@ -20,7 +20,7 @@
 
 unsigned int init_memory_counters(char *args, void **ptr);
 unsigned int get_memory_counters(uint64_t *results, void *ptr);
-void label_memory_counters(char **labels, void *ptr);
+void label_memory_counters(const char **labels, void *ptr);
 void clean_memory_counters(void *ptr);
 void *show_all_memory_counters(void *, size_t);
 
diff --git a/src/mojitos.c b/src/mojitos.c
index 52be057..668c991 100644
--- a/src/mojitos.c
+++ b/src/mojitos.c
@@ -210,7 +210,7 @@ int main(int argc, char **argv)
     struct timespec ts;
     struct timespec ts_ref;
 
-    char** labels = moj_labels();
+    const char** labels = moj_labels();
     init_manager(labels, nb_sensors, stat_mode);
 		 
     uint64_t stat_data = 0;
diff --git a/src/network.c b/src/network.c
index 54c5f3d..31dc1a1 100644
--- a/src/network.c
+++ b/src/network.c
@@ -242,7 +242,7 @@ void clean_network(void *ptr)
     free(state);
 }
 
-void label_network(char **labels, void *ptr)
+void label_network(const char **labels, void *ptr)
 {
     struct Network *state = (struct Network *) ptr;
 
diff --git a/src/network.h b/src/network.h
index f6ba9a1..c802fd4 100644
--- a/src/network.h
+++ b/src/network.h
@@ -21,7 +21,7 @@
 unsigned int init_network(char *, void **);
 unsigned int get_network(uint64_t *results, void *);
 void clean_network(void *);
-void label_network(char **labels, void *);
+void label_network(const char **labels, void *);
 
 Sensor network = {
     .init = init_network,
diff --git a/src/rapl.c b/src/rapl.c
index fce6b2b..557a062 100644
--- a/src/rapl.c
+++ b/src/rapl.c
@@ -206,7 +206,7 @@ void clean_rapl(void *ptr)
 }
 
 
-void label_rapl(char **labels, void *ptr)
+void label_rapl(const char **labels, void *ptr)
 {
     IntelRapl *rapl = (IntelRapl *) ptr;
 
diff --git a/src/rapl.h b/src/rapl.h
index ef9c8b6..cd5b2ad 100644
--- a/src/rapl.h
+++ b/src/rapl.h
@@ -21,7 +21,7 @@
 unsigned int init_rapl(char *, void **);
 unsigned int get_rapl(uint64_t *results, void *);
 void clean_rapl(void *);
-void label_rapl(char **labels, void *);
+void label_rapl(const char **labels, void *);
 
 Sensor rapl = {
     .init = init_rapl,
diff --git a/src/temperature.c b/src/temperature.c
index 185367a..8f40468 100644
--- a/src/temperature.c
+++ b/src/temperature.c
@@ -167,7 +167,7 @@ void clean_temperature(void *ptr)
     free(state);
 }
 
-void label_temperature(char **labels, void *ptr)
+void label_temperature(const char **labels, void *ptr)
 {
     Temperature *state = (Temperature *)ptr;
 
diff --git a/src/temperature.h b/src/temperature.h
index 129febc..52e01ac 100644
--- a/src/temperature.h
+++ b/src/temperature.h
@@ -21,7 +21,7 @@
 unsigned int init_temperature(char *, void **);
 unsigned int get_temperature(uint64_t *results, void *);
 void clean_temperature(void *);
-void label_temperature(char **labels, void *);
+void label_temperature(const char **labels, void *);
 
 Sensor temperature = {
     .init = init_temperature,
-- 
GitLab