diff options
author | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-05-19 19:35:16 +0000 |
---|---|---|
committer | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-05-19 19:35:16 +0000 |
commit | b474b62f4a076678653839da4c72075407d5430d (patch) | |
tree | 3ac0ff04c689b5d5a53bdf77aca20ab8861280d8 | |
parent | 52c9e41ded7768d4050c2500b2022f01c7c9fa98 (diff) |
Fix tab completion when you just do a plain tab without entering anything, and also fix show application tab completion. (issue #7089 reported by blitzrage)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@28792 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | cli.c | 9 | ||||
-rw-r--r-- | pbx.c | 4 |
2 files changed, 9 insertions, 4 deletions
@@ -1313,7 +1313,7 @@ static char *__ast_cli_generator(const char *text, const char *word, int state, int matchnum=0; char *ret = NULL; char matchstr[80] = ""; - int tws; + int tws = 0; char *dup = parse_args(text, &x, argv, sizeof(argv) / sizeof(argv[0]), &tws); if (!dup) /* error */ @@ -1321,9 +1321,12 @@ static char *__ast_cli_generator(const char *text, const char *word, int state, argindex = (!ast_strlen_zero(word) && x>0) ? x-1 : x; /* rebuild the command, ignore tws */ ast_join(matchstr, sizeof(matchstr)-1, argv); - if (tws) - strcat(matchstr, " "); /* XXX */ matchlen = strlen(matchstr); + if (tws) { + strcat(matchstr, " "); /* XXX */ + if (matchlen) + matchlen++; + } if (lock) AST_LIST_LOCK(&helpers); while( !ret && (e = cli_next(&i)) ) { @@ -2864,8 +2864,10 @@ static char *complete_show_application(const char *line, const char *word, int p /* return the n-th [partial] matching entry */ AST_LIST_LOCK(&apps); AST_LIST_TRAVERSE(&apps, a, list) { - if (!strncasecmp(word, a->name, wordlen) && ++which > state) + if (!strncasecmp(word, a->name, wordlen) && ++which > state) { ret = strdup(a->name); + break; + } } AST_LIST_UNLOCK(&apps); |