diff options
author | Corey Farrell <git@cfware.com> | 2017-11-09 00:42:10 -0500 |
---|---|---|
committer | Corey Farrell <git@cfware.com> | 2017-11-21 09:47:40 -0500 |
commit | 8a63f4e7093b619d7e9b84bf7f3df7aa92aa0d33 (patch) | |
tree | 8e3e4cacfd107c1869db6c717fc455912fe96f14 /include | |
parent | 115f53a0fb19138f07ca0c03f06f4a557d663f1f (diff) |
CLI: Create ast_cli_completion_add function.
Some completion generators are very inefficent due to the way CLI
requests matches one at a time. ast_cli_completion_add can be called
multiple times during one invokation of a CLI generator to add all
results without having to reinitialize the search state for each match.
Change-Id: I73d26d270bbbe1e3e6390799cfc1b639e39cceec
Diffstat (limited to 'include')
-rw-r--r-- | include/asterisk/cli.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/include/asterisk/cli.h b/include/asterisk/cli.h index 0a05a4c11..c2401a85d 100644 --- a/include/asterisk/cli.h +++ b/include/asterisk/cli.h @@ -300,6 +300,9 @@ int ast_cli_generatornummatches(const char *, const char *); * Subsequent entries are all possible values, followed by a NULL. * All strings and the array itself are malloc'ed and must be freed * by the caller. + * + * \warning This function cannot be called recursively so it will always + * fail if called from a CLI_GENERATE callback. */ char **ast_cli_completion_matches(const char *, const char *); @@ -321,10 +324,30 @@ char **ast_cli_completion_matches(const char *, const char *); * by the caller. * * \note The vector is sorted and does not contain any duplicates. + * + * \warning This function cannot be called recursively so it will always + * fail if called from a CLI_GENERATE callback. */ struct ast_vector_string *ast_cli_completion_vector(const char *text, const char *word); /*! + * \brief Add a result to a request for completion options. + * + * \param value A completion option text. + * + * \retval 0 Success + * \retval -1 Failure + * + * This is an alternative to returning individual values from CLI_GENERATE. Instead + * of repeatedly being asked for the next match and having to start over, you can + * call this function repeatedly from your own stateful loop. When all matches have + * been added you can return NULL from the CLI_GENERATE function. + * + * \note This function always eventually results in calling ast_free on \a value. + */ +int ast_cli_completion_add(char *value); + +/*! * \brief Command completion for the list of active channels. * * This can be called from a CLI command completion function that wants to |