]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Avoid autocompleting passed the action name argument in the CLI command.
authorEliel C. Sardanons <eliels@gmail.com>
Mon, 18 May 2009 20:31:29 +0000 (20:31 +0000)
committerEliel C. Sardanons <eliels@gmail.com>
Mon, 18 May 2009 20:31:29 +0000 (20:31 +0000)
When running the autocomplete of the CLI command 'manager show command <action>'
it was autocompleting everything else after the <action> argument, giving an error,
because this command doesn't support multiple AMI action names at a time.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@195367 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/manager.c

index b4067e914565b5c4ff65d81a873bfe440cb72c18..aacdf4b7e49f3d39a97711176020293a9a78eceb 100644 (file)
@@ -612,17 +612,22 @@ static char *handle_showmancmd(struct ast_cli_entry *e, int cmd, struct ast_cli_
                        "       Shows the detailed description for a specific Asterisk manager interface command.\n";
                return NULL;
        case CLI_GENERATE:
-               l = strlen(a->word);
-               which = 0;
-               AST_RWLIST_RDLOCK(&actions);
-               AST_RWLIST_TRAVERSE(&actions, cur, list) {
-                       if (!strncasecmp(a->word, cur->action, l) && ++which > a->n) {
-                               ret = ast_strdup(cur->action);
-                               break;  /* make sure we exit even if ast_strdup() returns NULL */
+               if (a->pos == 3) {
+                       /* autocomplete the action name. */
+                       l = strlen(a->word);
+                       which = 0;
+                       AST_RWLIST_RDLOCK(&actions);
+                       AST_RWLIST_TRAVERSE(&actions, cur, list) {
+                               if (!strncasecmp(a->word, cur->action, l) && ++which > a->n) {
+                                       ret = ast_strdup(cur->action);
+                                       break;  /* make sure we exit even if ast_strdup() returns NULL */
+                               }
                        }
+                       AST_RWLIST_UNLOCK(&actions);
+                       return ret;
                }
-               AST_RWLIST_UNLOCK(&actions);
-               return ret;
+
+               return NULL;
        }
        authority = ast_str_alloca(80);
        if (a->argc != 4) {