From 2ef1d7440a877ed69ea73c9e2b0c2fc920fcd0bb Mon Sep 17 00:00:00 2001
From: Felix Buehler <account@buehler.rocks>
Date: Tue, 18 Feb 2020 16:48:49 +0100
Subject: use format_placeholder for cpu_temperature

---
 src/print_cpu_temperature.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

(limited to 'src')

diff --git a/src/print_cpu_temperature.c b/src/print_cpu_temperature.c
index 01744a1..f94d1a7 100644
--- a/src/print_cpu_temperature.c
+++ b/src/print_cpu_temperature.c
@@ -10,6 +10,8 @@
 
 #include "i3status.h"
 
+#define STRING_SIZE 20
+
 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 #include <err.h>
 #include <sys/types.h>
@@ -213,7 +215,6 @@ void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const
     char *outwalk = buffer;
 #ifdef THERMAL_ZONE
     const char *selected_format = format;
-    const char *walk;
     bool colorful_output = false;
     char *thermal_zone;
     temperature_t temperature;
@@ -248,18 +249,13 @@ void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const
             selected_format = format_above_threshold;
     }
 
-    for (walk = selected_format; *walk != '\0'; walk++) {
-        if (*walk != '%') {
-            *(outwalk++) = *walk;
-
-        } else if (BEGINS_WITH(walk + 1, "degrees")) {
-            outwalk += sprintf(outwalk, "%s", temperature.formatted_value);
-            walk += strlen("degrees");
+    char string_degrees[STRING_SIZE];
+    snprintf(string_degrees, STRING_SIZE, "%s", temperature.formatted_value);
+    placeholder_t placeholders[] = {
+        {.name = "%degrees", .value = string_degrees}};
 
-        } else {
-            *(outwalk++) = '%';
-        }
-    }
+    const size_t num = sizeof(placeholders) / sizeof(placeholder_t);
+    buffer = format_placeholders(selected_format, &placeholders[0], num);
 
     if (colorful_output) {
         END_COLOR;
@@ -269,6 +265,7 @@ void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const
     free(thermal_zone);
 
     OUTPUT_FULL_TEXT(buffer);
+    free(buffer);
     return;
 error:
     free(thermal_zone);
-- 
cgit v1.2.3