summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2017-11-07 18:07:35 -0500
committerCorey Farrell <git@cfware.com>2017-11-17 09:28:43 -0500
commit0b8b153d3c30f192725dcf3640f716331b24640f (patch)
treedac23869f08b4fe235954ce086ee0ef9c83ae349 /include
parent2e9c7f9b8f080a4b5847da690633fd090c842088 (diff)
CLI: Create ast_cli_completion_vector.
This is a rewrite of ast_cli_completion_matches using a vector to build the list. The original function calls the vector version, NULL terminates the vector and extracts the elements array. One change in behavior the results are now sorted and deduplicated. This will solve bugs where some duplicate checking was done before the list was sorted. Change-Id: Iede20c5b4d965fa5ec71fda136ce9425eeb69519
Diffstat (limited to 'include')
-rw-r--r--include/asterisk/cli.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/include/asterisk/cli.h b/include/asterisk/cli.h
index c51d89eb8..7bf473c61 100644
--- a/include/asterisk/cli.h
+++ b/include/asterisk/cli.h
@@ -301,6 +301,27 @@ int ast_cli_generatornummatches(const char *, const char *);
char **ast_cli_completion_matches(const char *, const char *);
/*!
+ * \brief Generates a vector of strings for CLI completion.
+ *
+ * \param text Complete input being matched.
+ * \param word Current word being matched
+ *
+ * The results contain strings that both:
+ * 1) Begin with the string in \a word.
+ * 2) Are valid in a command after the string in \a text.
+ *
+ * The first entry (offset 0) of the result is the longest common substring
+ * in the results, useful to extend the string that has been completed.
+ * Subsequent entries are all possible values.
+ *
+ * \note All strings and the vector itself are malloc'ed and must be freed
+ * by the caller.
+ *
+ * \note The vector is sorted and does not contain any duplicates.
+ */
+struct ast_vector_string *ast_cli_completion_vector(const char *text, const char *word);
+
+/*!
* \brief Command completion for the list of active channels.
*
* This can be called from a CLI command completion function that wants to