]> git.ipfire.org Git - pakfire.git/commitdiff
string: Add function to format elapsed time
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 15 Mar 2023 03:01:30 +0000 (03:01 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 15 Mar 2023 03:01:30 +0000 (03:01 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/include/pakfire/string.h
src/libpakfire/string.c

index 603ae6c1f466823a8a90e66d25147c0e7af821c1..01a71c6f4fbff865a3527024e44c57edcd006851 100644 (file)
@@ -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);
index d03c8a40ed37457307a80cebedb669be33765c2d..8eaf8d91f6520786b1ea76af6604d81a62edc1ed 100644 (file)
@@ -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;