diff options
| author | Mark Stapp <mjs@voltanet.io> | 2020-03-05 14:06:46 -0500 |
|---|---|---|
| committer | Mark Stapp <mjs@voltanet.io> | 2020-03-09 11:12:32 -0400 |
| commit | d0636ead31ccfc9f6c27d02617d5965e3111d4ad (patch) | |
| tree | f1c383042125411fc44acd65febdf43ce1f1de17 /lib/monotime.h | |
| parent | 4c2a712d9325070e9ec45c90b1dd11d66e88169e (diff) | |
lib, *: add a common time interval formatting api
Add a common api that formats a time interval into a string
with different output for short and longer intervals. We do
this in several places, for cli/ui output.
Signed-off-by: Mark Stapp <mjs@voltanet.io>
Diffstat (limited to 'lib/monotime.h')
| -rw-r--r-- | lib/monotime.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/monotime.h b/lib/monotime.h index e246f177de..dda763784f 100644 --- a/lib/monotime.h +++ b/lib/monotime.h @@ -112,6 +112,26 @@ static inline char *time_to_string(time_t ts, char *buf) return ctime_r(&tbuf, buf); } +/* Convert interval to human-friendly string, used in cli output e.g. */ +static inline const char *frrtime_to_interval(time_t t, char *buf, + size_t buflen) +{ + struct tm tm; + + gmtime_r(&t, &tm); + + if (t < ONE_DAY_SECOND) + snprintf(buf, buflen, "%02d:%02d:%02d", tm.tm_hour, tm.tm_min, + tm.tm_sec); + else if (t < ONE_WEEK_SECOND) + snprintf(buf, buflen, "%dd%02dh%02dm", tm.tm_yday, tm.tm_hour, + tm.tm_min); + else + snprintf(buf, buflen, "%02dw%dd%02dh", tm.tm_yday / 7, + tm.tm_yday - ((tm.tm_yday / 7) * 7), tm.tm_hour); + return buf; +} + #ifdef __cplusplus } #endif |
