summaryrefslogtreecommitdiff
path: root/src/core/levels.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/levels.c')
-rw-r--r--src/core/levels.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/core/levels.c b/src/core/levels.c
index b47079ba..7997ba98 100644
--- a/src/core/levels.c
+++ b/src/core/levels.c
@@ -136,19 +136,25 @@ char *bits2level(int bits)
if (bits == 0)
return g_strdup("");
- if (bits == MSGLEVEL_ALL)
- return g_strdup("ALL");
str = g_string_new(NULL);
- if (bits & MSGLEVEL_NEVER)
+ if (bits & MSGLEVEL_NEVER) {
g_string_append(str, "NEVER ");
+ bits &= ~MSGLEVEL_NEVER;
+ }
- if (bits & MSGLEVEL_NO_ACT)
+ if (bits & MSGLEVEL_NO_ACT) {
g_string_append(str, "NO_ACT ");
+ bits &= ~MSGLEVEL_NO_ACT;
+ }
- for (n = 0; levels[n] != NULL; n++) {
- if (bits & (1L << n))
- g_string_append_printf(str, "%s ", levels[n]);
+ if (bits == MSGLEVEL_ALL) {
+ g_string_append(str, "ALL ");
+ } else {
+ for (n = 0; levels[n] != NULL; n++) {
+ if (bits & (1L << n))
+ g_string_append_printf(str, "%s ", levels[n]);
+ }
}
if (str->len > 0)
g_string_truncate(str, str->len-1);