diff options
author | Luigi Rizzo <rizzo@icir.org> | 2006-10-18 10:14:58 +0000 |
---|---|---|
committer | Luigi Rizzo <rizzo@icir.org> | 2006-10-18 10:14:58 +0000 |
commit | c93be15b7ebcbab0a623d2049c48355052e191c5 (patch) | |
tree | e9abeda8b828bd0e71a7ee42be6f541c4a8fd688 | |
parent | efd87b68ee70930fc6ddb03107125c26b3ac9007 (diff) |
simplify ast_strings_to_mask
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45505 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | main/manager.c | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/main/manager.c b/main/manager.c index f35d211e1..33549d38b 100644 --- a/main/manager.c +++ b/main/manager.c @@ -775,10 +775,10 @@ void astman_send_ack(struct mansession *s, struct message *m, char *msg) /*! Tells you if smallstr exists inside bigstr which is delim by delim and uses no buf or stringsep - ast_instring("this|that|more","this",',') == 1; + ast_instring("this|that|more","this",'|') == 1; feel free to move this to app.c -anthm */ -static int ast_instring(const char *bigstr, const char *smallstr, char delim) +static int ast_instring(const char *bigstr, const char *smallstr, const char delim) { const char *val = bigstr, *next; @@ -811,36 +811,26 @@ static int get_perm(const char *instr) return ret; } -static int ast_is_number(char *string) +/* + * A number returns itself, false returns 0, true returns all flags, + * other strings return the flags that are set. + */ +static int ast_strings_to_mask(char *string) { - int ret = 1, x = 0; + int x, ret = 0; + char *p; - if (!string) - return 0; + if (ast_strlen_zero(string)) + return -1; - for (x = 0; x < strlen(string); x++) { - if (!(string[x] >= 48 && string[x] <= 57)) { - ret = 0; + for (p = string; *p; p++) + if (*p < '0' || *p > '9') break; - } - } - - return ret ? atoi(string) : 0; -} - -static int ast_strings_to_mask(char *string) -{ - int x, ret = -1; - - x = ast_is_number(string); - - if (x) - ret = x; - else if (ast_strlen_zero(string)) - ret = -1; - else if (ast_false(string)) - ret = 0; - else if (ast_true(string)) { + if (!p) + return atoi(string); + if (ast_false(string)) + return 0; + if (ast_true(string)) { /* all permissions */ ret = 0; for (x=0; x<sizeof(perms) / sizeof(perms[0]); x++) ret |= perms[x].num; |