diff --git a/manager.c b/manager.c index f868b95603005f862b054abd926ba341015ac19f..3626bd5a2f04f0554e36762a5969264c0ad6acb5 100755 --- a/manager.c +++ b/manager.c @@ -395,19 +395,21 @@ static int ast_is_number(char *string) static int ast_strings_to_mask(char *string) { - int x = 0, ret = -1; + int x, ret = -1; x = ast_is_number(string); - if (x) + if (x) { ret = x; - else if (!string || ast_strlen_zero(string)) + } else if (!string || ast_strlen_zero(string)) { ret = -1; - else if (!strcasecmp(string, "off") || ast_false(string)) + } else if (ast_false(string)) { ret = 0; - else if (!strcasecmp(string, "on") || ast_true(string)) - ret = 1; - else { + } else if (ast_true(string)) { + ret = 0; + for (x=0; x<sizeof(perms) / sizeof(perms[0]); x++) + ret |= perms[x].num; + } else { ret = 0; for (x=0; x<sizeof(perms) / sizeof(perms[0]); x++) { if (ast_instring(string, perms[x].label, ','))