From: Michael Tremer Date: Thu, 19 Aug 2021 19:01:47 +0000 (+0000) Subject: util: Add helper function for strftime to format time now X-Git-Tag: 0.9.28~990 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5f2ed2026f77dc24f37e8974ca759ac6be9c6e4b;p=pakfire.git util: Add helper function for strftime to format time now Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/util.h b/src/libpakfire/include/pakfire/util.h index a066d0c94..f2f7eadaf 100644 --- a/src/libpakfire/include/pakfire/util.h +++ b/src/libpakfire/include/pakfire/util.h @@ -51,6 +51,11 @@ int pakfire_format_size(char* dst, size_t length, double value); int pakfire_format_speed(char* dst, size_t length, double value); char* pakfire_format_date(time_t t); +#define pakfire_strftime_now(dest, format) \ + __pakfire_strftime_now(dest, sizeof(dest) - 1, format) +int __pakfire_strftime_now(char* dest, size_t length, const char* format) + __attribute__((format(strftime, 3, 0)));; + int pakfire_path_exists(const char* path); time_t pakfire_path_age(const char* path); diff --git a/src/libpakfire/util.c b/src/libpakfire/util.c index 42ea4f7dd..1a4249017 100644 --- a/src/libpakfire/util.c +++ b/src/libpakfire/util.c @@ -473,6 +473,27 @@ char* pakfire_format_date(time_t t) { return pakfire_strftime("%Y-%m-%d", t); } +int __pakfire_strftime_now(char* dest, size_t length, const char* format) { + struct tm tm; + + // Fetch the current time + const time_t t = time(NULL); + if (t < 0) + return 1; + + // Convert to struct tm + struct tm* now = gmtime_r(&t, &tm); + if (!now) + return 1; + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-nonliteral" + strftime(dest, length, format, now); +#pragma GCC diagnostic pop + + return 0; +} + int __pakfire_path_join(char* dest, size_t length, const char* first, const char* second) { if (!first)