From: Lennart Poettering Date: Mon, 23 Jan 2023 12:16:12 +0000 (+0100) Subject: os-util: optionally, return EOL time in os_release_support_ended() X-Git-Tag: v253-rc1~11^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6bfe9b3b8d9c208d17ba76bc93ae075afef0ae69;p=thirdparty%2Fsystemd.git os-util: optionally, return EOL time in os_release_support_ended() --- diff --git a/src/basic/os-util.c b/src/basic/os-util.c index 3b50279a443..37a4ac1fe4b 100644 --- a/src/basic/os-util.c +++ b/src/basic/os-util.c @@ -336,7 +336,7 @@ int load_extension_release_pairs(const char *root, const char *extension, bool r return load_env_file_pairs(f, p, ret); } -int os_release_support_ended(const char *support_end, bool quiet) { +int os_release_support_ended(const char *support_end, bool quiet, usec_t *ret_eol) { _cleanup_free_ char *_support_end_alloc = NULL; int r; @@ -367,8 +367,10 @@ int os_release_support_ended(const char *support_end, bool quiet) { return log_full_errno(quiet ? LOG_DEBUG : LOG_WARNING, SYNTHETIC_ERRNO(EINVAL), "Failed to convert SUPPORT_END= in os-release file, ignoring: %m"); - usec_t ts = now(CLOCK_REALTIME); - return DIV_ROUND_UP(ts, USEC_PER_SEC) > (usec_t) eol; + if (ret_eol) + *ret_eol = eol * USEC_PER_SEC; + + return DIV_ROUND_UP(now(CLOCK_REALTIME), USEC_PER_SEC) > (usec_t) eol; } const char *os_release_pretty_name(const char *pretty_name, const char *name) { diff --git a/src/basic/os-util.h b/src/basic/os-util.h index 1239f6f6b7a..a6b121ec434 100644 --- a/src/basic/os-util.h +++ b/src/basic/os-util.h @@ -32,6 +32,6 @@ int load_extension_release_pairs(const char *root, const char *extension, bool r int load_os_release_pairs(const char *root, char ***ret); int load_os_release_pairs_with_prefix(const char *root, const char *prefix, char ***ret); -int os_release_support_ended(const char *support_end, bool quiet); +int os_release_support_ended(const char *support_end, bool quiet, usec_t *ret_eol); const char *os_release_pretty_name(const char *pretty_name, const char *name); diff --git a/src/core/main.c b/src/core/main.c index 19e4f235b25..a7cdc8d6310 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1385,7 +1385,7 @@ static int os_release_status(void) { label); } - if (support_end && os_release_support_ended(support_end, false) > 0) + if (support_end && os_release_support_ended(support_end, /* quiet */ false, NULL) > 0) /* pretty_name may include the version already, so we'll print the version only if we * have it and we're not using pretty_name. */ status_printf(ANSI_HIGHLIGHT_RED " !! " ANSI_NORMAL, 0, diff --git a/src/core/manager.c b/src/core/manager.c index f8576cca1ae..d39e917134f 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -4547,7 +4547,7 @@ char* manager_taint_string(const Manager *m) { if (clock_is_localtime(NULL) > 0) stage[n++] = "local-hwclock"; - if (os_release_support_ended(NULL, true) > 0) + if (os_release_support_ended(NULL, /* quiet= */ true, NULL) > 0) stage[n++] = "support-ended"; _cleanup_free_ char *destination = NULL; diff --git a/src/test/test-os-util.c b/src/test/test-os-util.c index 0cfc1e3dbf9..bc9e3ec91bc 100644 --- a/src/test/test-os-util.c +++ b/src/test/test-os-util.c @@ -75,11 +75,11 @@ TEST(load_os_release_pairs) { TEST(os_release_support_ended) { int r; - assert_se(os_release_support_ended("1999-01-01", false) == true); - assert_se(os_release_support_ended("2037-12-31", false) == false); - assert_se(os_release_support_ended("-1-1-1", true) == -EINVAL); + assert_se(os_release_support_ended("1999-01-01", false, NULL) == true); + assert_se(os_release_support_ended("2037-12-31", false, NULL) == false); + assert_se(os_release_support_ended("-1-1-1", true, NULL) == -EINVAL); - r = os_release_support_ended(NULL, false); + r = os_release_support_ended(NULL, false, NULL); if (r < 0) log_info_errno(r, "Failed to check host: %m"); else