Introduction
Introduction Statistics Contact Development Disclaimer Help
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
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.