mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-12 12:58:30 +00:00
Fix an issue with file name completion in "module load" and "load".
Issue 8846 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@51245 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
27
main/cli.c
27
main/cli.c
@@ -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);
|
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 *c;
|
||||||
char filename[256];
|
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;
|
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[])
|
static int group_show_channels(int fd, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
#define FORMAT_STRING "%-25s %-20s %-20s\n"
|
#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 = {
|
static struct ast_cli_entry cli_module_load_deprecated = {
|
||||||
{ "load", NULL },
|
{ "load", NULL },
|
||||||
handle_load_deprecated, NULL,
|
handle_load_deprecated, NULL,
|
||||||
NULL, complete_fn };
|
NULL, complete_fn_2 };
|
||||||
|
|
||||||
static struct ast_cli_entry cli_module_reload_deprecated = {
|
static struct ast_cli_entry cli_module_reload_deprecated = {
|
||||||
{ "reload", NULL },
|
{ "reload", NULL },
|
||||||
@@ -1460,7 +1481,7 @@ static struct ast_cli_entry cli_cli[] = {
|
|||||||
|
|
||||||
{ { "module", "load", NULL },
|
{ { "module", "load", NULL },
|
||||||
handle_load, "Load a module by name",
|
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 },
|
{ { "module", "reload", NULL },
|
||||||
handle_reload, "Reload configuration",
|
handle_reload, "Reload configuration",
|
||||||
|
|||||||
Reference in New Issue
Block a user