handle levels more logically

This commit is contained in:
vague666 2019-10-17 14:57:41 +02:00
commit fe7af7071b

View file

@ -173,19 +173,24 @@ int combine_level(int dest, const char *src)
g_return_val_if_fail(src != NULL, dest); g_return_val_if_fail(src != NULL, dest);
list = g_strsplit(src, " ", -1); if (index(src, '+') == NULL && index(src, '-') == NULL) {
for (item = list; *item != NULL; item++) { dest = level2bits(src, NULL);
itemname = *item + (**item == '+' || **item == '-' ? 1 : 0); }
itemlevel = level_get(itemname); 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) if (g_strcmp0(itemname, "NONE") == 0)
dest = 0; dest = 0;
else if (**item == '-') else if (**item == '-')
dest &= ~(itemlevel); dest &= ~(itemlevel);
else else
dest |= itemlevel; dest |= itemlevel;
}
g_strfreev(list);
} }
g_strfreev(list);
return dest; return dest;
} }