uptime.c - slstatus - status monitor
(HTM) git clone git://git.suckless.org/slstatus
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
uptime.c (702B)
---
1 /* See LICENSE file for copyright and license details. */
2 #include <stdint.h>
3 #include <stdio.h>
4 #include <time.h>
5
6 #include "../slstatus.h"
7 #include "../util.h"
8
9 #if defined(CLOCK_BOOTTIME)
10 #define UPTIME_FLAG CLOCK_BOOTTIME
11 #elif defined(CLOCK_UPTIME)
12 #define UPTIME_FLAG CLOCK_UPTIME
13 #else
14 #define UPTIME_FLAG CLOCK_MONOTONIC
15 #endif
16
17 const char *
18 uptime(const char *unused)
19 {
20 char warn_buf[256];
21 uintmax_t h, m;
22 struct timespec uptime;
23
24 if (clock_gettime(UPTIME_FLAG, &uptime) < 0) {
25 snprintf(warn_buf, sizeof(warn_buf), "clock_gettime %d", UPTIME_FLAG);
26 warn(warn_buf);
27 return NULL;
28 }
29
30 h = uptime.tv_sec / 3600;
31 m = uptime.tv_sec % 3600 / 60;
32
33 return bprintf("%juh %jum", h, m);
34 }