summaryrefslogtreecommitdiff
path: root/main/cli.c
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2017-11-09 01:39:13 -0500
committerCorey Farrell <git@cfware.com>2017-11-21 09:41:17 -0500
commit369e77d68b2239dd6d791642c4dae8a0a8cf7ddc (patch)
tree08b0c0fef3291c5e26900e96a18788dfc5360e6a /main/cli.c
parent65606471dd904c08fc89b10d79de340f4ac24d2f (diff)
CLI: Remove calls to ast_cli_generator.
The ability to add to localized storage cannot be supported by ast_cli_generator. The only calls to ast_cli_generator should be by functions that need to proxy the CLI generator, for example 'cli check permissions' or 'core show help'. * ast_cli_generatornummatches now retrieves the vector of matches and reports the number of elements (not including 'best' match). * test_substitution retrieves and iterates the vector. Change-Id: I8cd6b93905363cf7a33a2d2b0e2a8f8446d9f248
Diffstat (limited to 'main/cli.c')
-rw-r--r--main/cli.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/main/cli.c b/main/cli.c
index eae14adc4..1653838ea 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -2475,18 +2475,17 @@ static char *parse_args(const char *s, int *argc, const char *argv[], int max, i
/*! \brief Return the number of unique matches for the generator */
int ast_cli_generatornummatches(const char *text, const char *word)
{
- int matches = 0, i = 0;
- char *buf = NULL, *oldbuf = NULL;
-
- while ((buf = ast_cli_generator(text, word, i++))) {
- if (!oldbuf || strcmp(buf,oldbuf))
- matches++;
- if (oldbuf)
- ast_free(oldbuf);
- oldbuf = buf;
- }
- if (oldbuf)
- ast_free(oldbuf);
+ int matches;
+ struct ast_vector_string *vec = ast_cli_completion_vector(text, word);
+
+ if (!vec) {
+ return 0;
+ }
+
+ matches = AST_VECTOR_SIZE(vec) - 1;
+ AST_VECTOR_CALLBACK_VOID(vec, ast_free);
+ AST_VECTOR_PTR_FREE(vec);
+
return matches;
}