diff options
author | Tobias Klauser <tklauser@distanz.ch> | 2009-01-26 23:26:35 +0100 |
---|---|---|
committer | Tobias Klauser <tklauser@distanz.ch> | 2009-01-26 23:32:19 +0100 |
commit | 9f319ae55acb09d066d18639c823d8b9a4c2bff6 (patch) | |
tree | 21a4ba8958f0c2df1e98d51458435af55f15e2c4 | |
parent | dcf287959480208532b589630ed705dd1b375d1e (diff) |
Various updates
* Be more graceful about non-existing values (print n/a instead of returning)
* Document requirements
-rw-r--r-- | statusbar.c | 79 |
1 files changed, 44 insertions, 35 deletions
diff --git a/statusbar.c b/statusbar.c index 234cb70..ba36dc8 100644 --- a/statusbar.c +++ b/statusbar.c @@ -1,6 +1,8 @@ /* * Fast and easy way to gather the necessary information for dwm status bar * + * Needs libacpi-dev and libcpufreq-dev + * * Copyright (c) 2007 T. Klauser <tklauser@distanz.ch> */ @@ -13,7 +15,7 @@ #include <libacpi.h> #include <cpufreq.h> -#define DATE_STR "%a %Y-%m-%d %H:%M:%S" +#define DATE_STR "%a %Y-%m-%d %H:%M" #define HOUR 3600 /* sec per hour */ #define MINUTE 60 /* sec per min */ #define LOADS_SCALE 65536.0 @@ -23,6 +25,7 @@ int main(int argc, char **argv) time_t today; struct tm tim; char str[25]; + int temp; unsigned long freq, tmp_freq; long up, uph, upm; struct sysinfo info; @@ -49,49 +52,55 @@ int main(int argc, char **argv) if (batteries[0].present) printf("%d%% %s| ", batteries[0].percentage, g.adapt.ac_state == P_AC ? "(ac) " : ""); + else + printf("n/a%% | "); /* 3) Temperature */ - printf("%d C | ", g.temperature); + temp = g.temperature; + if (temp < 0 || temp == NOT_SUPPORTED) + printf("n/a C | "); + else + printf("%d C | ", temp); /* 4) Current CPU frequency */ freq = cpufreq_get_freq_kernel(0); - if (!freq) - return -1; + if (freq) { + /* Taken from cpufrequtils */ + if (freq > 1000000) { + tmp_freq = freq % 10000; + if (tmp_freq >= 5000) + freq += 10000; + printf("%u.%02u G", ((unsigned int) freq / 1000000), + ((unsigned int) (freq % 1000000) / 10000)); + } else if (freq > 100000) { + tmp_freq = freq % 1000; + if (tmp_freq >= 500) + freq += 1000; + printf("%u M", ((unsigned int) freq / 1000)); + } else if (freq > 1000) { + tmp_freq = freq % 100; + if (tmp_freq >= 50) + freq += 100; + printf("%u.%01u M", ((unsigned int) freq / 1000), + ((unsigned int) (freq % 1000) / 100)); + } else + printf("%lu k", freq); - /* Taken from cpufrequtils */ - if (freq > 1000000) { - tmp_freq = freq % 10000; - if (tmp_freq >= 5000) - freq += 10000; - printf("%u.%02u G", ((unsigned int) freq / 1000000), - ((unsigned int) (freq % 1000000) / 10000)); - } else if (freq > 100000) { - tmp_freq = freq % 1000; - if (tmp_freq >= 500) - freq += 1000; - printf("%u M", ((unsigned int) freq / 1000)); - } else if (freq > 1000) { - tmp_freq = freq % 100; - if (tmp_freq >= 50) - freq += 100; - printf("%u.%01u M", ((unsigned int) freq / 1000), - ((unsigned int) (freq % 1000) / 100)); + printf("Hz | "); } else - printf("%lu k", freq); - - printf("Hz | "); + printf("n/a | "); /* 5) Uptime and load average */ - if (sysinfo(&info) < 0) - return -1; - - up = info.uptime; - uph = up / HOUR; - upm = (up % HOUR) / MINUTE; - printf("%lu:%.02lu | %.02f %.02f %.02f\n", uph, upm, - info.loads[0] / LOADS_SCALE, - info.loads[1] / LOADS_SCALE, - info.loads[2] / LOADS_SCALE); + if (sysinfo(&info) == 0) { + up = info.uptime; + uph = up / HOUR; + upm = (up % HOUR) / MINUTE; + printf("%lu:%.02lu | %.02f %.02f %.02f\n", uph, upm, + info.loads[0] / LOADS_SCALE, + info.loads[1] / LOADS_SCALE, + info.loads[2] / LOADS_SCALE); + } else + printf("n/a | n/a\n"); return 0; } |