Add username completion for manager show user CLI command. (issue #9929 reported...
authorJoshua Colp <jcolp@digium.com>
Mon, 11 Jun 2007 11:59:53 +0000 (11:59 +0000)
committerJoshua Colp <jcolp@digium.com>
Mon, 11 Jun 2007 11:59:53 +0000 (11:59 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@68663 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/manager.c

index eb469fb..dcd115f 100644 (file)
@@ -423,6 +423,27 @@ static char *complete_show_mancmd(const char *line, const char *word, int pos, i
        return ret;
 }
 
+static char *complete_show_manuser(const char *line, const char *word, int pos, int state)
+{
+       struct ast_manager_user *user = NULL;
+       int l = strlen(word), which = 0;
+       char *ret = NULL;
+
+       if (pos != 3)
+               return NULL;
+       
+       AST_LIST_LOCK(&users);
+       AST_LIST_TRAVERSE(&users, user, list) {
+               if (!strncasecmp(word, user->username, l) && ++which > state) {
+                       ret = ast_strdup(user->username);
+                       break;
+               }
+       }
+       AST_LIST_UNLOCK(&users);
+
+       return ret;
+}
+
 static int check_manager_session_inuse(const char *name)
 {
        struct mansession *session = NULL;
@@ -663,7 +684,7 @@ static struct ast_cli_entry cli_manager[] = {
 
        { { "manager", "show", "user", NULL },
        handle_showmanager, "Display information on a specific manager user",
-       showmanager_help, NULL, NULL },
+       showmanager_help, complete_show_manuser, NULL },
 
        { { "manager", "debug", NULL },
        handle_mandebug, "Show, enable, disable debugging of the manager code",