From: Michael Tremer Date: Wed, 15 Mar 2023 03:01:30 +0000 (+0000) Subject: string: Add function to format elapsed time X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b91139b499c6880b6701bc3f98f2d23bdb3b91cf;p=people%2Fstevee%2Fpakfire.git string: Add function to format elapsed time Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/string.h b/src/libpakfire/include/pakfire/string.h index 603ae6c1..01a71c6f 100644 --- a/src/libpakfire/include/pakfire/string.h +++ b/src/libpakfire/include/pakfire/string.h @@ -51,6 +51,8 @@ char* pakfire_string_replace(const char* s, const char* pattern, const char* rep char** pakfire_string_split(const char* s, char delim); char* pakfire_string_join(char** list, const char* delim); +#define TIME_STRING_MAX 32 + #define pakfire_format_size(dst, value) \ __pakfire_format_size(dst, sizeof(dst), value) int __pakfire_format_size(char* dst, size_t length, double value); @@ -66,6 +68,10 @@ int __pakfire_strftime(char* buffer, const size_t length, int __pakfire_strftime_now(char* buffer, const size_t length, const char* format) __attribute__((format(strftime, 3, 0))); +#define pakfire_format_time(buffer, t) \ + __pakfire_format_time(buffer, sizeof(buffer), t) +int __pakfire_format_time(char* buffer, const size_t length, const time_t t); + size_t pakfire_string_parse_bytes(const char* s); int pakfire_string_is_url(const char* s); diff --git a/src/libpakfire/string.c b/src/libpakfire/string.c index d03c8a40..8eaf8d91 100644 --- a/src/libpakfire/string.c +++ b/src/libpakfire/string.c @@ -384,6 +384,25 @@ int __pakfire_strftime_now(char* buffer, size_t length, const char* format) { return __pakfire_strftime(buffer, length, format, t); } +int __pakfire_format_time(char* buffer, const size_t length, const time_t t) { + const char* format = NULL; + + // Values smaller than zero for t are invalid + if (t < 0) + return 1; + + if (t >= 86400) + format = "%dd%Hh%Mm"; + else if (t >= 3600) + format = "%Hm%Mm%Ss"; + else if (t >= 60) + format = "%Mm%Ss"; + else + format = "%Ss"; + + return __pakfire_strftime(buffer, length, format, t); +} + size_t pakfire_string_parse_bytes(const char* s) { const char* units = "kMGT"; char* unit = NULL;