From 23fba266a9454ee6ca095b7f6eccf523f6526607 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Sat, 2 Mar 2019 09:41:24 +0000 Subject: Save pending changes in 1.0.0.0 branch --- src/state/hpr_fmttime.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/state/hpr_fmttime.c (limited to 'src/state/hpr_fmttime.c') diff --git a/src/state/hpr_fmttime.c b/src/state/hpr_fmttime.c new file mode 100644 index 0000000..8038cfe --- /dev/null +++ b/src/state/hpr_fmttime.c @@ -0,0 +1,52 @@ +/* ISC license. */ + +#include + +#include + +#include "hpr.h" + +size_t hpr_fmttime (char *buf, size_t max, unsigned int seconds) +{ + size_t m = 0 ; + unsigned int minutes = 0 ; + unsigned int hours = 0 ; + if (seconds >= 60) + { + minutes = seconds / 60 ; + seconds %= 60 ; + if (minutes >= 60) + { + hours = minutes / 60 ; + minutes %= 60 ; + } + } + m = sizeof(HPR_WALL_BANNER) - 1 ; + if (m > max) return 0 ; + memcpy(buf, HPR_WALL_BANNER, m) ; + if (hours) + { + if (m + UINT_FMT + 6 > max) return 0 ; + m += uint_fmt(buf + m, hours) ; + memcpy(buf + m, " hour", 5) ; + m += 5 ; + if (hours > 1) buf[m++] = 's' ; + buf[m++] = ' ' ; + } + if (minutes) + { + if (m + UINT_FMT + 8 > max) return 0 ; + m += uint_fmt(buf + m, minutes) ; + memcpy(buf + m, " minute", 7) ; + m += 7 ; + if (minutes > 1) buf[m++] = 's' ; + buf[m++] = ' ' ; + } + if (m + UINT_FMT + 8 > max) return 0 ; + m += uint_fmt(buf + m, seconds) ; + memcpy(buf + m, " second", 7) ; + m += 7 ; + if (seconds != 1) buf[m++] = 's' ; + buf[m++] = ' ' ; + return m ; +} -- cgit v1.2.3