summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Buehler <account@buehler.rocks>2020-02-18 16:48:49 +0100
committerFelix Buehler <account@buehler.rocks>2020-02-18 17:51:12 +0100
commit2ef1d7440a877ed69ea73c9e2b0c2fc920fcd0bb (patch)
tree4a117826ff70aba74237cf67f397e0019d68824c /src
parentb61e959a58750fe3a4cf9ed2472d4cb7112bd2c3 (diff)
use format_placeholder for cpu_temperature
Diffstat (limited to 'src')
-rw-r--r--src/print_cpu_temperature.c21
1 files changed, 9 insertions, 12 deletions
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);