summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuigi Rizzo <rizzo@icir.org>2006-11-13 12:04:05 +0000
committerLuigi Rizzo <rizzo@icir.org>2006-11-13 12:04:05 +0000
commit06c9ef6411e58358d39cbe0e1a6474dbb01647f2 (patch)
tree7eaaee7ea93831f2a826c38e8dff8efff218e879
parentb2e2f3f9573b9fd9b8f72cca6dc16ced7f361803 (diff)
stop looking for new entries when we know we are done.
there is no functional change, so it is not necessary to bother merging this to 1.4 now. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@47537 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--main/cli.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/main/cli.c b/main/cli.c
index b2432920c..cdbcc5605 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -1622,17 +1622,21 @@ static char *__ast_cli_generator(const char *text, const char *word, int state,
}
if (lock)
AST_LIST_LOCK(&helpers);
- while( !ret && (e = cli_next(&i)) ) {
+ while ((e = cli_next(&i))) {
int lc = strlen(e->_full_cmd);
if (e->_full_cmd[0] != '_' && lc > 0 && matchlen <= lc &&
!strncasecmp(matchstr, e->_full_cmd, matchlen)) {
/* Found initial part, return a copy of the next word... */
- if (e->cmda[argindex] && ++matchnum > state)
+ if (e->cmda[argindex] && ++matchnum > state) {
ret = strdup(e->cmda[argindex]); /* we need a malloced string */
- } else if (e->generator && !strncasecmp(matchstr, e->_full_cmd, lc) && matchstr[lc] < 33) {
+ break;
+ }
+ } else if (!strncasecmp(matchstr, e->_full_cmd, lc) && matchstr[lc] < 33) {
/* We have a command in its entirity within us -- theoretically only one
command can have this occur */
- ret = e->generator(matchstr, word, argindex, state);
+ if (e->generator)
+ ret = e->generator(matchstr, word, argindex, state);
+ break;
}
}
if (lock)