diff options
Diffstat (limited to 'statuses/uptime.c')
-rw-r--r-- | statuses/uptime.c | 84 |
1 files changed, 46 insertions, 38 deletions
diff --git a/statuses/uptime.c b/statuses/uptime.c index 8db1c45..d512cdb 100644 --- a/statuses/uptime.c +++ b/statuses/uptime.c @@ -3,51 +3,59 @@ #include <unistd.h> #include <stdlib.h> #include "uptime.h" +#include "../config.h" void status_uptime() { char stline[16]; int stfile; - size_t stlen; + ssize_t stlen; int i; int upts, uptm, upth, uptd; - - stfile = open("/proc/uptime", 0); - if (stfile != -1) + + fputs(" ^fg(#AAAAAA)up: ", stdout); + + stlen = fileRead(stline, sizeof(stline), "/proc/uptime"); + if (stlen < 0) + { + fputs(" ^fg(red)ERROR ", stdout); + return; + } + + // Cut first element + for(i = 0; i < stlen; i++) { - stlen = read(stfile, stline, sizeof(stline)); - close(stfile); - - for(i = 0; i < stlen; i++) - if (stline[i] == ' ') - stline[i] = '\0'; - - upts = atoi(stline); - uptd = upts / (24 * 60 * 60); - upts -= uptd * (24 * 60 * 60); - upth = upts / (60 * 60); - upts -= upth * (60 * 60); - uptm = upts / (60); - upts -= uptm * (60); - - fputs(" ^fg(#AAAAAA)up: ", stdout); - - if (uptd > 0) - printf("%dd ", uptd); - - printf("%d:%.2d" - - #ifdef SHOW_SECONDS - ":%.2d" - #endif - - " " - ,upth - ,uptm - - #ifdef SHOW_SECONDS - ,upts - #endif - ); + if (stline[i] == ' ') + { + stline[i] = '\0'; + break; + } } + + // Split time into days, hours, mins, secs + upts = atoi(stline); + uptd = upts / (24 * 60 * 60); + upts -= uptd * (24 * 60 * 60); + upth = upts / (60 * 60); + upts -= upth * (60 * 60); + uptm = upts / (60); + upts -= uptm * (60); + + if (uptd > 0) + printf("%dd ", uptd); + + printf("%d:%.2d" + + #ifdef SHOW_SECONDS + ":%.2d" + #endif + + " " + ,upth + ,uptm + + #ifdef SHOW_SECONDS + ,upts + #endif + ); } |