use format_placeholder for cpu_temperature

This commit is contained in:
Felix Buehler 2020-02-18 16:48:49 +01:00
parent b61e959a58
commit 2ef1d7440a
4 changed files with 21 additions and 12 deletions

View File

@ -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;
char string_degrees[STRING_SIZE];
snprintf(string_degrees, STRING_SIZE, "%s", temperature.formatted_value);
placeholder_t placeholders[] = {
{.name = "%degrees", .value = string_degrees}};
} else if (BEGINS_WITH(walk + 1, "degrees")) {
outwalk += sprintf(outwalk, "%s", temperature.formatted_value);
walk += strlen("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);

View File

@ -0,0 +1 @@
I can %haz literal% % ?

View File

@ -0,0 +1,10 @@
general {
output_format = "none"
}
order += "cpu_temperature 0"
cpu_temperature 0 {
format = "I can %haz literal% % ?"
path = "testcases/020-percentliteral-cpu_temperature/temp1_input"
}

View File

@ -0,0 +1 @@
37000