]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
os-util: optionally, return EOL time in os_release_support_ended()
authorLennart Poettering <lennart@poettering.net>
Mon, 23 Jan 2023 12:16:12 +0000 (13:16 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 24 Jan 2023 14:32:43 +0000 (15:32 +0100)
src/basic/os-util.c
src/basic/os-util.h
src/core/main.c
src/core/manager.c
src/test/test-os-util.c

index 3b50279a443a86e2543736dcc993f5c1e422c95a..37a4ac1fe4bddda2b23c2a2d0ee0cf04bad7eff4 100644 (file)
@@ -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) {
index 1239f6f6b7a312bcf1e053b4555ff19f355db5c8..a6b121ec434c9bdf9c981028829f79f0b7f18914 100644 (file)
@@ -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);
index 19e4f235b250372cd7b946a76c7fbb64762c6b37..a7cdc8d631054528b81d4fe475f749181de55c83 100644 (file)
@@ -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,
index f8576cca1aeb5722f8cc6079ff2c1c38d232d3f7..d39e917134f104f5abcf27a7b7932feb6575ff39 100644 (file)
@@ -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;
index 0cfc1e3dbf9a6709cbadc500e076f43dc9f5af3c..bc9e3ec91bc0f2aab0ecd6049b5b2de64a2cc558 100644 (file)
@@ -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