]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix an issue with file name completion in "module load" and "load".
authorJason Parker <jparker@digium.com>
Thu, 18 Jan 2007 18:42:00 +0000 (18:42 +0000)
committerJason Parker <jparker@digium.com>
Thu, 18 Jan 2007 18:42:00 +0000 (18:42 +0000)
Issue 8846

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

main/cli.c

index 023ca4bc878450c7dc38cdb520d2106c120f6818..bce55e1a22c6918c7e91fb6152a9796ba534223a 100644 (file)
@@ -1243,7 +1243,7 @@ static char *complete_mod_4(const char *line, const char *word, int pos, int sta
        return ast_module_helper(line, word, pos, state, 3, 0);
 }
 
-static char *complete_fn(const char *line, const char *word, int pos, int state)
+static char *complete_fn_2(const char *line, const char *word, int pos, int state)
 {
        char *c;
        char filename[256];
@@ -1264,6 +1264,27 @@ static char *complete_fn(const char *line, const char *word, int pos, int state)
        return c ? strdup(c) : c;
 }
 
+static char *complete_fn_3(const char *line, const char *word, int pos, int state)
+{
+       char *c;
+       char filename[256];
+
+       if (pos != 2)
+               return NULL;
+       
+       if (word[0] == '/')
+               ast_copy_string(filename, word, sizeof(filename));
+       else
+               snprintf(filename, sizeof(filename), "%s/%s", ast_config_AST_MODULE_DIR, word);
+       
+       c = filename_completion_function(filename, state);
+       
+       if (c && word[0] != '/')
+               c += (strlen(ast_config_AST_MODULE_DIR) + 1);
+       
+       return c ? strdup(c) : c;
+}
+
 static int group_show_channels(int fd, int argc, char *argv[])
 {
 #define FORMAT_STRING  "%-25s  %-20s  %-20s\n"
@@ -1391,7 +1412,7 @@ static struct ast_cli_entry cli_show_modules_like_deprecated = {
 static struct ast_cli_entry cli_module_load_deprecated = {
        { "load", NULL },
        handle_load_deprecated, NULL,
-       NULL, complete_fn };
+       NULL, complete_fn_2 };
 
 static struct ast_cli_entry cli_module_reload_deprecated = {
        { "reload", NULL },
@@ -1460,7 +1481,7 @@ static struct ast_cli_entry cli_cli[] = {
 
        { { "module", "load", NULL },
        handle_load, "Load a module by name",
-       load_help, complete_fn, &cli_module_load_deprecated },
+       load_help, complete_fn_3, &cli_module_load_deprecated },
 
        { { "module", "reload", NULL },
        handle_reload, "Reload configuration",