uptime: unification of the uptime function for linux/openbsd - slstatus - statu… | |
git clone git://git.suckless.org/slstatus | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 005b5417179de9eff56a9ac5f2ed818ae9ad5817 | |
parent 8c8091f4f165974c44d75dd9ccc7cc4dcd1d1c96 | |
Author: Tobias Tschinkowitz <[email protected]> | |
Date: Fri, 1 Jun 2018 20:10:34 +0200 | |
uptime: unification of the uptime function for linux/openbsd | |
Diffstat: | |
M components/uptime.c | 60 ++++++-----------------------… | |
1 file changed, 10 insertions(+), 50 deletions(-) | |
--- | |
diff --git a/components/uptime.c b/components/uptime.c | |
@@ -1,59 +1,19 @@ | |
/* See LICENSE file for copyright and license details. */ | |
+#include <time.h> | |
#include <stdio.h> | |
#include "../util.h" | |
-static const char * | |
-format(int uptime) | |
+const char * | |
+uptime(void) | |
{ | |
int h, m; | |
- | |
- h = uptime / 3600; | |
- m = (uptime - h * 3600) / 60; | |
- | |
+ struct timespec uptime; | |
+ if (clock_gettime(CLOCK_BOOTTIME, &uptime) < 0) { | |
+ warn("clock_gettime 'CLOCK_BOOTTIME'"); | |
+ return NULL; | |
+ } | |
+ h = uptime.tv_sec / 3600; | |
+ m = uptime.tv_sec % 3600 / 60; | |
return bprintf("%dh %dm", h, m); | |
} | |
- | |
-#if defined(__linux__) | |
- #include <sys/sysinfo.h> | |
- | |
- const char * | |
- uptime(void) | |
- { | |
- int uptime; | |
- struct sysinfo info; | |
- | |
- sysinfo(&info); | |
- uptime = info.uptime; | |
- | |
- return format(uptime); | |
- } | |
-#elif defined(__OpenBSD__) | |
- #include <sys/sysctl.h> | |
- #include <sys/time.h> | |
- | |
- const char * | |
- uptime(void) | |
- { | |
- int mib[2], uptime; | |
- size_t size; | |
- time_t now; | |
- struct timeval boottime; | |
- | |
- time(&now); | |
- | |
- mib[0] = CTL_KERN; | |
- mib[1] = KERN_BOOTTIME; | |
- | |
- size = sizeof(boottime); | |
- | |
- if (sysctl(mib, 2, &boottime, &size, NULL, 0) < 0) { | |
- warn("sysctl 'KERN_BOOTTIME':"); | |
- return NULL; | |
- } | |
- | |
- uptime = now - boottime.tv_sec; | |
- | |
- return format(uptime); | |
- } | |
-#endif |