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);
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;
}