From c93be15b7ebcbab0a623d2049c48355052e191c5 Mon Sep 17 00:00:00 2001 From: Luigi Rizzo Date: Wed, 18 Oct 2006 10:14:58 +0000 Subject: [PATCH] simplify ast_strings_to_mask git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45505 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/manager.c | 48 +++++++++++++++++++----------------------------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/main/manager.c b/main/manager.c index f35d211e13..33549d38b4 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) -{ - int ret = 1, x = 0; - - if (!string) - return 0; - - for (x = 0; x < strlen(string); x++) { - if (!(string[x] >= 48 && string[x] <= 57)) { - ret = 0; - break; - } - } - - return ret ? atoi(string) : 0; -} - +/* + * 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 x, ret = -1; - - x = ast_is_number(string); + int x, ret = 0; + char *p; - 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 (ast_strlen_zero(string)) + return -1; + + for (p = string; *p; p++) + if (*p < '0' || *p > '9') + break; + if (!p) + return atoi(string); + if (ast_false(string)) + return 0; + if (ast_true(string)) { /* all permissions */ ret = 0; for (x=0; x