simplify ast_strings_to_mask
authorLuigi Rizzo <rizzo@icir.org>
Wed, 18 Oct 2006 10:14:58 +0000 (10:14 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Wed, 18 Oct 2006 10:14:58 +0000 (10:14 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45505 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/manager.c

index f35d211..33549d3 100644 (file)
@@ -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;