]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
astobj2_container: Use ast_cli_completion_add for container names.
authorCorey Farrell <git@cfware.com>
Thu, 15 Mar 2018 12:29:50 +0000 (08:29 -0400)
committerCorey Farrell <git@cfware.com>
Thu, 15 Mar 2018 12:31:32 +0000 (06:31 -0600)
Change-Id: I4f0fc09e820eb8d8da2354a177dbcf503c56ddd1

main/astobj2_container.c

index ae20fa639ab257281a3c97764111b078e7aadcd5..ec9db3b02331565de7825814d3bf79b597febdf0 100644 (file)
@@ -1024,12 +1024,15 @@ void ao2_container_unregister(const char *name)
 }
 
 #if defined(AO2_DEBUG)
-static int ao2_complete_reg_cb(void *obj, void *arg, void *data, int flags)
+static int ao2_complete_reg_cb(void *obj, void *arg, int flags)
 {
-       struct ao2_reg_match *which = data;
+       struct ao2_reg_container *reg = obj;
 
-       /* ao2_reg_sort_cb() has already filtered the search to matching keys */
-       return (which->find_nth < ++which->count) ? (CMP_MATCH | CMP_STOP) : 0;
+       if (ast_cli_completion_add(ast_strdup(reg->name))) {
+               return CMP_STOP;
+       }
+
+       return 0;
 }
 #endif /* defined(AO2_DEBUG) */
 
@@ -1037,9 +1040,6 @@ static int ao2_complete_reg_cb(void *obj, void *arg, void *data, int flags)
 static char *complete_container_names(struct ast_cli_args *a)
 {
        struct ao2_reg_partial_key partial_key;
-       struct ao2_reg_match which;
-       struct ao2_reg_container *reg;
-       char *name;
 
        if (a->pos != 3) {
                return NULL;
@@ -1047,17 +1047,10 @@ static char *complete_container_names(struct ast_cli_args *a)
 
        partial_key.len = strlen(a->word);
        partial_key.name = a->word;
-       which.find_nth = a->n;
-       which.count = 0;
-       reg = ao2_t_callback_data(reg_containers, partial_key.len ? OBJ_SEARCH_PARTIAL_KEY : 0,
-               ao2_complete_reg_cb, &partial_key, &which, "Find partial registered container");
-       if (reg) {
-               name = ast_strdup(reg->name);
-               ao2_t_ref(reg, -1, "Done with registered container object.");
-       } else {
-               name = NULL;
-       }
-       return name;
+       ao2_callback(reg_containers, partial_key.len ? OBJ_SEARCH_PARTIAL_KEY : 0,
+               ao2_complete_reg_cb, &partial_key);
+
+       return NULL;
 }
 #endif /* defined(AO2_DEBUG) */