Support colored output for CPU temperature on FreeBSD
Patch status: rejected
Patch by Baptiste Daroussin
To apply this patch, use:
curl http://cr.i3wm.org/patch/94/raw.patch | git am
b/src/print_cpu_temperature.c
| 13 |
@@ -14,6 +14,7 @@ |
| 14 |
#include <sys/sysctl.h> |
| 15 |
#define TZ_ZEROC 2732 |
| 16 |
#define TZ_KELVTOC(x) (((x) - TZ_ZEROC) / 10), abs(((x) - TZ_ZEROC) % 10) |
| 17 |
+#define TZ_AVG(x) ((x) - TZ_ZEROC) / 10 |
| 18 |
#endif |
| 19 |
|
| 20 |
#if defined(__OpenBSD__) |
| 21 |
@@ -35,9 +36,9 @@ static char *thermal_zone; |
| 22 |
* |
| 23 |
*/ |
| 24 |
void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const char *path, const char *format, int max_threshold) {
|
| 25 |
- char *outwalk = buffer; |
| 26 |
#ifdef THERMAL_ZONE |
| 27 |
const char *walk; |
| 28 |
+ char *outwalk = buffer; |
| 29 |
bool colorful_output = false; |
| 30 |
|
| 31 |
if (path == NULL) |
| 32 |
@@ -80,7 +81,16 @@ void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const |
| 33 |
if (sysctlbyname(path, &sysctl_rslt, &sysctl_size, NULL, 0)) |
| 34 |
goto error; |
| 35 |
|
| 36 |
+ if (TZ_AVG(sysctl_rslt) >= max_threshold) {
|
| 37 |
+ START_COLOR("color_bad");
|
| 38 |
+ colorful_output = true; |
| 39 |
+ } |
| 40 |
outwalk += sprintf(outwalk, "%d.%d", TZ_KELVTOC(sysctl_rslt)); |
| 41 |
+ if (colorful_output) {
|
| 42 |
+ END_COLOR; |
| 43 |
+ colorful_output = false; |
| 44 |
+ } |
| 45 |
+ |
| 46 |
#elif defined(__OpenBSD__) |
| 47 |
struct sensordev sensordev; |
| 48 |
struct sensor sensor; |