Skip to content

Commit 559de3c

Browse files
committed
feat: support view multi tag in view dispatch
1 parent bfcde37 commit 559de3c

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

src/config/parse_config.h

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -988,7 +988,31 @@ FuncType parse_func_name(char *func_name, Arg *arg, char *arg_value,
988988
(*arg).i = atoi(arg_value2);
989989
} else if (strcmp(func_name, "view") == 0) {
990990
func = bind_to_view;
991-
(*arg).ui = 1 << (atoi(arg_value) - 1);
991+
992+
u_int32_t mask = 0;
993+
char *token;
994+
char *arg_copy = strdup(arg_value);
995+
996+
if (arg_copy != NULL) {
997+
char *saveptr = NULL;
998+
token = strtok_r(arg_copy, "|", &saveptr);
999+
1000+
while (token != NULL) {
1001+
int num = atoi(token);
1002+
if (num > 0 && num <= LENGTH(tags)) {
1003+
mask |= (1 << (num - 1));
1004+
}
1005+
token = strtok_r(NULL, "|", &saveptr);
1006+
}
1007+
1008+
free(arg_copy);
1009+
}
1010+
1011+
if (mask) {
1012+
(*arg).ui = mask;
1013+
} else {
1014+
(*arg).ui = atoi(arg_value);
1015+
}
9921016
(*arg).i = atoi(arg_value2);
9931017
} else if (strcmp(func_name, "viewcrossmon") == 0) {
9941018
func = viewcrossmon;

0 commit comments

Comments
 (0)