]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: rework unit_active_state_to_glyph() to use a translation table 19255/head
authorLennart Poettering <lennart@poettering.net>
Thu, 8 Apr 2021 21:01:25 +0000 (23:01 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 8 Apr 2021 21:01:25 +0000 (23:01 +0200)
Let's make this a bit more readable by implementing this via a
translation table, indexed by the state.

src/basic/unit-def.c

index 6fbb947f096dab7146b7517cd2cb9f43c0f8529b..5cfabca83fb08fcae548ce83943483c1b564ef66 100644 (file)
@@ -296,22 +296,19 @@ static const char* const notify_access_table[_NOTIFY_ACCESS_MAX] = {
 DEFINE_STRING_TABLE_LOOKUP(notify_access, NotifyAccess);
 
 SpecialGlyph unit_active_state_to_glyph(UnitActiveState state) {
-        switch (state) {
-                case UNIT_ACTIVE:
-                    return SPECIAL_GLYPH_BLACK_CIRCLE;
-                case UNIT_RELOADING:
-                    return SPECIAL_GLYPH_CIRCLE_ARROW;
-                case UNIT_INACTIVE:
-                    return SPECIAL_GLYPH_WHITE_CIRCLE;
-                case UNIT_FAILED:
-                    return SPECIAL_GLYPH_MULTIPLICATION_SIGN;
-                case UNIT_ACTIVATING:
-                case UNIT_DEACTIVATING:
-                    return SPECIAL_GLYPH_BLACK_CIRCLE;
-                case UNIT_MAINTENANCE:
-                    return SPECIAL_GLYPH_WHITE_CIRCLE;
-
-                default:
-                    return SPECIAL_GLYPH_BLACK_CIRCLE;
-            }
+        static const SpecialGlyph map[_UNIT_ACTIVE_STATE_MAX] = {
+                [UNIT_ACTIVE]       = SPECIAL_GLYPH_BLACK_CIRCLE,
+                [UNIT_RELOADING]    = SPECIAL_GLYPH_CIRCLE_ARROW,
+                [UNIT_INACTIVE]     = SPECIAL_GLYPH_WHITE_CIRCLE,
+                [UNIT_FAILED]       = SPECIAL_GLYPH_MULTIPLICATION_SIGN,
+                [UNIT_ACTIVATING]   = SPECIAL_GLYPH_BLACK_CIRCLE,
+                [UNIT_DEACTIVATING] = SPECIAL_GLYPH_BLACK_CIRCLE,
+                [UNIT_MAINTENANCE]  = SPECIAL_GLYPH_WHITE_CIRCLE,
+        };
+
+        if (state < 0)
+                return _SPECIAL_GLYPH_INVALID;
+
+        assert(state < _UNIT_ACTIVE_STATE_MAX);
+        return map[state];
 }