mirror of
https://github.com/irssi/irssi.git
synced 2026-08-22 10:02:22 +02:00
handle levels more logically
This commit is contained in:
parent
453b648e7e
commit
fe7af7071b
1 changed files with 17 additions and 12 deletions
|
|
@ -173,19 +173,24 @@ int combine_level(int dest, const char *src)
|
|||
|
||||
g_return_val_if_fail(src != NULL, dest);
|
||||
|
||||
list = g_strsplit(src, " ", -1);
|
||||
for (item = list; *item != NULL; item++) {
|
||||
itemname = *item + (**item == '+' || **item == '-' ? 1 : 0);
|
||||
itemlevel = level_get(itemname);
|
||||
if (index(src, '+') == NULL && index(src, '-') == NULL) {
|
||||
dest = level2bits(src, NULL);
|
||||
}
|
||||
else {
|
||||
list = g_strsplit(src, " ", -1);
|
||||
for (item = list; *item != NULL; item++) {
|
||||
itemname = *item + (**item == '+' || **item == '-' ? 1 : 0);
|
||||
itemlevel = level_get(itemname);
|
||||
|
||||
if (g_strcmp0(itemname, "NONE") == 0)
|
||||
dest = 0;
|
||||
else if (**item == '-')
|
||||
dest &= ~(itemlevel);
|
||||
else
|
||||
dest |= itemlevel;
|
||||
if (g_strcmp0(itemname, "NONE") == 0)
|
||||
dest = 0;
|
||||
else if (**item == '-')
|
||||
dest &= ~(itemlevel);
|
||||
else
|
||||
dest |= itemlevel;
|
||||
}
|
||||
g_strfreev(list);
|
||||
}
|
||||
g_strfreev(list);
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue