• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

systemd / systemd / 13877892945

15 Mar 2025 08:56PM UTC coverage: 71.915% (+0.2%) from 71.757%
13877892945

push

github

web-flow
Fix bootctl status to not print strange glyphs in logs (#36745)

146 of 198 new or added lines in 57 files covered. (73.74%)

153 existing lines in 28 files now uncovered.

296065 of 411690 relevant lines covered (71.91%)

715276.25 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

44.83
/src/sysupdate/sysupdate-update-set-flags.c
1
/* SPDX-License-Identifier: LGPL-2.1-or-later */
2

3
#include "ansi-color.h"
4
#include "glyph-util.h"
5
#include "sysupdate-update-set-flags.h"
6
#include "terminal-util.h"
7

8
const char* update_set_flags_to_color(UpdateSetFlags flags) {
52✔
9

10
        if (flags == 0 || (flags & UPDATE_OBSOLETE))
52✔
11
                return (flags & UPDATE_NEWEST) ? ansi_highlight_grey() : ansi_grey();
×
12

13
        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_INCOMPLETE))
52✔
14
                return ansi_highlight_yellow();
18✔
15

16
        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_NEWEST))
34✔
17
                return ansi_highlight();
56✔
18

19
        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_PROTECTED))
6✔
20
                return ansi_highlight_magenta();
×
21

22
        if ((flags & (UPDATE_AVAILABLE|UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_OBSOLETE)) == (UPDATE_AVAILABLE|UPDATE_NEWEST))
6✔
23
                return ansi_highlight_green();
×
24

25
        return NULL;
26
}
27

28
const char* update_set_flags_to_glyph(UpdateSetFlags flags) {
32✔
29

30
        if (flags == 0 || (flags & UPDATE_OBSOLETE))
32✔
NEW
31
                return glyph(GLYPH_MULTIPLICATION_SIGN);
×
32

33
        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_NEWEST))
32✔
34
                return glyph(GLYPH_BLACK_CIRCLE);
24✔
35

36
        if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_PROTECTED))
8✔
NEW
37
                return glyph(GLYPH_WHITE_CIRCLE);
×
38

39
        if ((flags & (UPDATE_AVAILABLE|UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_OBSOLETE)) == (UPDATE_AVAILABLE|UPDATE_NEWEST))
8✔
NEW
40
                return glyph(GLYPH_CIRCLE_ARROW);
×
41

42
        return " ";
43
}
44

45
const char* update_set_flags_to_string(UpdateSetFlags flags) {
32✔
46

47
        switch ((unsigned) flags) {
32✔
48

49
        case 0:
50
                return "n/a";
51

52
        case UPDATE_INSTALLED|UPDATE_NEWEST:
16✔
53
        case UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_PROTECTED:
54
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_NEWEST:
55
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_NEWEST|UPDATE_PROTECTED:
56
                return "current";
16✔
57

58
        case UPDATE_AVAILABLE|UPDATE_NEWEST:
×
59
        case UPDATE_AVAILABLE|UPDATE_NEWEST|UPDATE_PROTECTED:
60
                return "candidate";
×
61

62
        case UPDATE_INSTALLED:
2✔
63
        case UPDATE_INSTALLED|UPDATE_AVAILABLE:
64
                return "installed";
2✔
65

66
        case UPDATE_INSTALLED|UPDATE_PROTECTED:
×
67
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_PROTECTED:
68
                return "protected";
×
69

70
        case UPDATE_AVAILABLE:
4✔
71
        case UPDATE_AVAILABLE|UPDATE_PROTECTED:
72
                return "available";
4✔
73

74
        case UPDATE_INSTALLED|UPDATE_INCOMPLETE|UPDATE_NEWEST:
8✔
75
        case UPDATE_INSTALLED|UPDATE_INCOMPLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
76
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_INCOMPLETE|UPDATE_NEWEST:
77
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_INCOMPLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
78
                return "current+incomplete";
8✔
79

80
        case UPDATE_INSTALLED|UPDATE_INCOMPLETE:
2✔
81
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_INCOMPLETE:
82
                return "installed+incomplete";
2✔
83

84
        case UPDATE_INSTALLED|UPDATE_INCOMPLETE|UPDATE_PROTECTED:
×
85
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_INCOMPLETE|UPDATE_PROTECTED:
86
                return "protected+incomplete";
×
87

88
        case UPDATE_AVAILABLE|UPDATE_INCOMPLETE:
×
89
        case UPDATE_AVAILABLE|UPDATE_INCOMPLETE|UPDATE_PROTECTED:
90
        case UPDATE_AVAILABLE|UPDATE_INCOMPLETE|UPDATE_NEWEST:
91
        case UPDATE_AVAILABLE|UPDATE_INCOMPLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
92
                /* We must never offer an update as available for download if it's incomplete */
93
                assert_not_reached();
×
94

95
        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_NEWEST:
×
96
        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
97
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST:
98
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
99
                return "current+obsolete";
×
100

101
        case UPDATE_INSTALLED|UPDATE_OBSOLETE:
×
102
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE:
103
                return "installed+obsolete";
×
104

105
        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_PROTECTED:
×
106
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_PROTECTED:
107
                return "protected+obsolete";
×
108

109
        case UPDATE_AVAILABLE|UPDATE_OBSOLETE:
×
110
        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_PROTECTED:
111
        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST:
112
        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
113
                return "available+obsolete";
×
114

115
        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_INCOMPLETE|UPDATE_NEWEST:
×
116
        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_INCOMPLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
117
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_INCOMPLETE|UPDATE_NEWEST:
118
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_INCOMPLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
119
                return "current+obsolete+incomplete";
×
120

121
        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_INCOMPLETE:
×
122
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_INCOMPLETE:
123
                return "installed+obsolete+incomplete";
×
124

125
        case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_INCOMPLETE|UPDATE_PROTECTED:
×
126
        case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_INCOMPLETE|UPDATE_PROTECTED:
127
                return "protected+obsolete+incomplete";
×
128

129
        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_INCOMPLETE:
×
130
        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_INCOMPLETE|UPDATE_PROTECTED:
131
        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_INCOMPLETE|UPDATE_NEWEST:
132
        case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_INCOMPLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
133
                assert_not_reached();
×
134

135
        default:
×
136
                assert_not_reached();
×
137
        }
138
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc