]> git.sur5r.net Git - i3/i3status/commitdiff
implement the 'path' option for cpu temperature
authorMichael Stapelberg <michael@stapelberg.de>
Thu, 6 Jan 2011 17:22:46 +0000 (18:22 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Thu, 6 Jan 2011 17:22:46 +0000 (18:22 +0100)
i3status.c
include/i3status.h
src/print_cpu_temperature.c

index eff6da411c0e92150e06f73e21876bfbcef8713f..e4a3e4c1d5c3db141cf0ebbe7dd5dee29c095420 100644 (file)
@@ -229,6 +229,7 @@ int main(int argc, char *argv[]) {
 
         cfg_opt_t temp_opts[] = {
                 CFG_STR("format", "%degrees C", CFGF_NONE),
+                CFG_STR("path", NULL, CFGF_NONE),
                 CFG_END()
         };
 
@@ -361,7 +362,7 @@ int main(int argc, char *argv[]) {
                                              cfg_getint(sec, "mixer_idx"));
 
                         CASE_SEC_TITLE("cpu_temperature")
-                                print_cpu_temperature_info(atoi(title), cfg_getstr(sec, "format"));
+                                print_cpu_temperature_info(atoi(title), cfg_getstr(sec, "path"), cfg_getstr(sec, "format"));
                 }
                 printf("\n");
                 fflush(stdout);
index 0ed0d1f0803144610652d735a7a0a2c6d1b6a634..1bcf86abf8274e0e60d1b35d632fc5f6515a20cf 100644 (file)
@@ -66,7 +66,7 @@ void print_ddate(const char *format);
 const char *get_ip_addr();
 void print_wireless_info(const char *interface, const char *format_up, const char *format_down);
 void print_run_watch(const char *title, const char *pidfile, const char *format);
-void print_cpu_temperature_info(int zone, const char *format);
+void print_cpu_temperature_info(int zone, const char *path, const char *format);
 void print_eth_info(const char *interface, const char *format_up, const char *format_down);
 void print_load();
 void print_volume(const char *fmt, const char *device, const char *mixer, int mixer_idx);
index d524f0b6bd8003d4f30f12561c5aef98c28bac64..84f78e0269cf481ba76350bf67987094e0ede2e9 100644 (file)
@@ -21,11 +21,14 @@ static char *thermal_zone;
  * returns the temperature in degree celcius.
  *
  */
-void print_cpu_temperature_info(int zone, const char *format) {
+void print_cpu_temperature_info(int zone, const char *path, const char *format) {
         const char *walk;
         static char buf[16];
 
-        asprintf(&thermal_zone, THERMAL_ZONE, zone);
+        if (path == NULL) {
+                asprintf(&thermal_zone, THERMAL_ZONE, zone);
+                path = thermal_zone;
+        }
 
         for (walk = format; *walk != '\0'; walk++) {
                 if (*walk != '%') {
@@ -36,8 +39,8 @@ void print_cpu_temperature_info(int zone, const char *format) {
                 if (BEGINS_WITH(walk+1, "degrees")) {
 #if defined(LINUX)
                         long int temp;
-                        if (!slurp(thermal_zone, buf, sizeof(buf)))
-                                die("Could not open \"%s\"\n", thermal_zone);
+                        if (!slurp(path, buf, sizeof(buf)))
+                                die("Could not open \"%s\"\n", path);
                         temp = strtol(buf, NULL, 10);
                         if (temp == LONG_MIN || temp == LONG_MAX || temp <= 0)
                                 (void)printf("?");
@@ -46,7 +49,7 @@ void print_cpu_temperature_info(int zone, const char *format) {
 #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
                         int sysctl_rslt;
                         size_t sysctl_size = sizeof(sysctl_rslt);
-                        if (sysctlbyname(thermal_zone, &sysctl_rslt, &sysctl_size, NULL, 0)) {
+                        if (sysctlbyname(path, &sysctl_rslt, &sysctl_size, NULL, 0)) {
                                 (void)printf("No thermal zone found");
                                 return;
                         }