]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
named_acl: Use ast_cli_completion_add.
authorCorey Farrell <git@cfware.com>
Sat, 17 Mar 2018 06:39:41 +0000 (02:39 -0400)
committerCorey Farrell <git@cfware.com>
Mon, 19 Mar 2018 21:48:34 +0000 (15:48 -0600)
Change-Id: I317a82de976bbdbfe4352c243e32a7bb8f66c377

main/named_acl.c

index 9ea89903eac376a638e7d41c2848903524f36f36..826313dcf72c878d5c6fc2bc1f231e1857d68aef 100644 (file)
@@ -502,12 +502,10 @@ static void cli_display_named_acl_list(int fd)
 /* \brief ACL command show <name> */
 static char *handle_show_named_acl_cmd(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       RAII_VAR(struct named_acl_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
+       struct named_acl_config *cfg;
        int length;
-       int which;
        struct ao2_iterator i;
        struct named_acl *named_acl;
-       char *match = NULL;
 
        switch (cmd) {
        case CLI_INIT:
@@ -517,23 +515,29 @@ static char *handle_show_named_acl_cmd(struct ast_cli_entry *e, int cmd, struct
                        "   Shows a list of named ACLs or lists all entries in a given named ACL.\n";
                return NULL;
        case CLI_GENERATE:
+               if (a->pos != 2) {
+                       return NULL;
+               }
+
+               cfg = ao2_global_obj_ref(globals);
                if (!cfg) {
                        return NULL;
                }
                length = strlen(a->word);
-               which = 0;
                i = ao2_iterator_init(cfg->named_acl_list, 0);
                while ((named_acl = ao2_iterator_next(&i))) {
-                       if (!strncasecmp(a->word, named_acl->name, length) && ++which > a->n) {
-                               match = ast_strdup(named_acl->name);
-                               ao2_ref(named_acl, -1);
-                               break;
+                       if (!strncasecmp(a->word, named_acl->name, length)) {
+                               if (ast_cli_completion_add(ast_strdup(named_acl->name))) {
+                                       ao2_ref(named_acl, -1);
+                                       break;
+                               }
                        }
                        ao2_ref(named_acl, -1);
                }
                ao2_iterator_destroy(&i);
-               return match;
+               ao2_ref(cfg, -1);
 
+               return NULL;
        }
 
        if (a->argc == 2) {