sysupdate: Split UpdateSetFlags out from UpdateSet
authorAdrian Vovk <adrianvovk@gmail.com>
Thu, 13 Jul 2023 18:47:30 +0000 (14:47 -0400)
committerTom Coldrick <thomas.coldrick@codethink.co.uk>
Fri, 12 Jul 2024 13:38:10 +0000 (14:38 +0100)
This will let us reuse UpdateSetFlags in updatectl

src/sysupdate/meson.build
src/sysupdate/sysupdate-update-set-flags.c [new file with mode: 0644]
src/sysupdate/sysupdate-update-set-flags.h [new file with mode: 0644]
src/sysupdate/sysupdate-update-set.c
src/sysupdate/sysupdate-update-set.h
src/sysupdate/sysupdate.c

index 417b47a136487956425660102245db2e4e06940c..3e50c42afefd9663e8889f3e1091070727b75c05 100644 (file)
@@ -8,6 +8,7 @@ systemd_sysupdate_sources = files(
         'sysupdate-resource.c',
         'sysupdate-transfer.c',
         'sysupdate-update-set.c',
+        'sysupdate-update-set-flags.c',
         'sysupdate.c',
 )
 
diff --git a/src/sysupdate/sysupdate-update-set-flags.c b/src/sysupdate/sysupdate-update-set-flags.c
new file mode 100644 (file)
index 0000000..1aade45
--- /dev/null
@@ -0,0 +1,93 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "glyph-util.h"
+#include "sysupdate-update-set-flags.h"
+#include "terminal-util.h"
+
+const char *update_set_flags_to_color(UpdateSetFlags flags) {
+
+        if (flags == 0 || (flags & UPDATE_OBSOLETE))
+                return (flags & UPDATE_NEWEST) ? ansi_highlight_grey() : ansi_grey();
+
+        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_NEWEST))
+                return ansi_highlight();
+
+        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_PROTECTED))
+                return ansi_highlight_magenta();
+
+        if ((flags & (UPDATE_AVAILABLE|UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_OBSOLETE)) == (UPDATE_AVAILABLE|UPDATE_NEWEST))
+                return ansi_highlight_green();
+
+        return NULL;
+}
+
+const char *update_set_flags_to_glyph(UpdateSetFlags flags) {
+
+        if (flags == 0 || (flags & UPDATE_OBSOLETE))
+                return special_glyph(SPECIAL_GLYPH_MULTIPLICATION_SIGN);
+
+        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_NEWEST))
+                return special_glyph(SPECIAL_GLYPH_BLACK_CIRCLE);
+
+        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_PROTECTED))
+                return special_glyph(SPECIAL_GLYPH_WHITE_CIRCLE);
+
+        if ((flags & (UPDATE_AVAILABLE|UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_OBSOLETE)) == (UPDATE_AVAILABLE|UPDATE_NEWEST))
+                return special_glyph(SPECIAL_GLYPH_CIRCLE_ARROW);
+
+        return " ";
+}
+
+const char *update_set_flags_to_string(UpdateSetFlags flags) {
+
+        switch ((unsigned) flags) {
+
+        case 0:
+                return "n/a";
+
+        case UPDATE_INSTALLED|UPDATE_NEWEST:
+        case UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_PROTECTED:
+        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_NEWEST:
+        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_NEWEST|UPDATE_PROTECTED:
+                return "current";
+
+        case UPDATE_AVAILABLE|UPDATE_NEWEST:
+        case UPDATE_AVAILABLE|UPDATE_NEWEST|UPDATE_PROTECTED:
+                return "candidate";
+
+        case UPDATE_INSTALLED:
+        case UPDATE_INSTALLED|UPDATE_AVAILABLE:
+                return "installed";
+
+        case UPDATE_INSTALLED|UPDATE_PROTECTED:
+        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_PROTECTED:
+                return "protected";
+
+        case UPDATE_AVAILABLE:
+        case UPDATE_AVAILABLE|UPDATE_PROTECTED:
+                return "available";
+
+        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_NEWEST:
+        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
+        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST:
+        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
+                return "current+obsolete";
+
+        case UPDATE_INSTALLED|UPDATE_OBSOLETE:
+        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE:
+                return "installed+obsolete";
+
+        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_PROTECTED:
+        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_PROTECTED:
+                return "protected+obsolete";
+
+        case UPDATE_AVAILABLE|UPDATE_OBSOLETE:
+        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_PROTECTED:
+        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST:
+        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
+                return "available+obsolete";
+
+        default:
+                assert_not_reached();
+        }
+}
diff --git a/src/sysupdate/sysupdate-update-set-flags.h b/src/sysupdate/sysupdate-update-set-flags.h
new file mode 100644 (file)
index 0000000..6f954d7
--- /dev/null
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#pragma once
+
+typedef enum UpdateSetFlags {
+        UPDATE_NEWEST    = 1 << 0,
+        UPDATE_AVAILABLE = 1 << 1,
+        UPDATE_INSTALLED = 1 << 2,
+        UPDATE_OBSOLETE  = 1 << 3,
+        UPDATE_PROTECTED = 1 << 4,
+} UpdateSetFlags;
+
+const char *update_set_flags_to_color(UpdateSetFlags flags);
+const char *update_set_flags_to_glyph(UpdateSetFlags flags);
+const char *update_set_flags_to_string(UpdateSetFlags flags);
index f5a800429fb0e3208888af51ec4a32bd078264da..5682102d617162bdaf2af1ae214c77c80e4ce947 100644 (file)
@@ -1,10 +1,8 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
 #include "alloc-util.h"
-#include "glyph-util.h"
 #include "string-util.h"
 #include "sysupdate-update-set.h"
-#include "terminal-util.h"
 
 UpdateSet *update_set_free(UpdateSet *us) {
         if (!us)
@@ -27,37 +25,3 @@ int update_set_cmp(UpdateSet *const*a, UpdateSet *const*b) {
         /* Newest version at the beginning */
         return -strverscmp_improved((*a)->version, (*b)->version);
 }
-
-const char* update_set_flags_to_color(UpdateSetFlags flags) {
-
-        if (flags == 0 || (flags & UPDATE_OBSOLETE))
-                return (flags & UPDATE_NEWEST) ? ansi_highlight_grey() : ansi_grey();
-
-        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_NEWEST))
-                return ansi_highlight();
-
-        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_PROTECTED))
-                return ansi_highlight_magenta();
-
-        if ((flags & (UPDATE_AVAILABLE|UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_OBSOLETE)) == (UPDATE_AVAILABLE|UPDATE_NEWEST))
-                return ansi_highlight_green();
-
-        return NULL;
-}
-
-const char* update_set_flags_to_glyph(UpdateSetFlags flags) {
-
-        if (flags == 0 || (flags & UPDATE_OBSOLETE))
-                return special_glyph(SPECIAL_GLYPH_MULTIPLICATION_SIGN);
-
-        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_NEWEST))
-                return special_glyph(SPECIAL_GLYPH_BLACK_CIRCLE);
-
-        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_PROTECTED))
-                return special_glyph(SPECIAL_GLYPH_WHITE_CIRCLE);
-
-        if ((flags & (UPDATE_AVAILABLE|UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_OBSOLETE)) == (UPDATE_AVAILABLE|UPDATE_NEWEST))
-                return special_glyph(SPECIAL_GLYPH_CIRCLE_ARROW);
-
-        return " ";
-}
index 981535aedff901fe349ff507e701e3b26a47b6cc..0b9bbfbe674a9b9551455d1de188c6a520e13307 100644 (file)
@@ -8,14 +8,7 @@
 typedef struct UpdateSet UpdateSet;
 
 #include "sysupdate-instance.h"
-
-typedef enum UpdateSetFlags {
-        UPDATE_NEWEST    = 1 << 0,
-        UPDATE_AVAILABLE = 1 << 1,
-        UPDATE_INSTALLED = 1 << 2,
-        UPDATE_OBSOLETE  = 1 << 3,
-        UPDATE_PROTECTED = 1 << 4,
-} UpdateSetFlags;
+#include "sysupdate-update-set-flags.h"
 
 struct UpdateSet {
         UpdateSetFlags flags;
@@ -25,8 +18,4 @@ struct UpdateSet {
 };
 
 UpdateSet *update_set_free(UpdateSet *us);
-
 int update_set_cmp(UpdateSet *const*a, UpdateSet *const*b);
-
-const char* update_set_flags_to_color(UpdateSetFlags flags);
-const char* update_set_flags_to_glyph(UpdateSetFlags flags);
index b94e2244d7da7d71f43ebd6c45e41e1a9d223545..e2f154d0e8dccc7e8ed325f444248027972706d2 100644 (file)
@@ -375,60 +375,6 @@ static int context_discover_update_sets(Context *c) {
         return 0;
 }
 
-static const char *update_set_flags_to_string(UpdateSetFlags flags) {
-
-        switch ((unsigned) flags) {
-
-        case 0:
-                return "n/a";
-
-        case UPDATE_INSTALLED|UPDATE_NEWEST:
-        case UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_PROTECTED:
-        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_NEWEST:
-        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_NEWEST|UPDATE_PROTECTED:
-                return "current";
-
-        case UPDATE_AVAILABLE|UPDATE_NEWEST:
-        case UPDATE_AVAILABLE|UPDATE_NEWEST|UPDATE_PROTECTED:
-                return "candidate";
-
-        case UPDATE_INSTALLED:
-        case UPDATE_INSTALLED|UPDATE_AVAILABLE:
-                return "installed";
-
-        case UPDATE_INSTALLED|UPDATE_PROTECTED:
-        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_PROTECTED:
-                return "protected";
-
-        case UPDATE_AVAILABLE:
-        case UPDATE_AVAILABLE|UPDATE_PROTECTED:
-                return "available";
-
-        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_NEWEST:
-        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
-        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST:
-        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
-                return "current+obsolete";
-
-        case UPDATE_INSTALLED|UPDATE_OBSOLETE:
-        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE:
-                return "installed+obsolete";
-
-        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_PROTECTED:
-        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_PROTECTED:
-                return "protected+obsolete";
-
-        case UPDATE_AVAILABLE|UPDATE_OBSOLETE:
-        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_PROTECTED:
-        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST:
-        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
-                return "available+obsolete";
-
-        default:
-                assert_not_reached();
-        }
-}
-
 static int context_show_table(Context *c) {
         _cleanup_(table_unrefp) Table *t = NULL;
         int r;