[asterisk-commits] qwell: branch 1.4 r51245 - /branches/1.4/main/cli.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Thu Jan 18 11:42:01 MST 2007


Author: qwell
Date: Thu Jan 18 12:42:00 2007
New Revision: 51245

URL: http://svn.digium.com/view/asterisk?view=rev&rev=51245
Log:
Fix an issue with file name completion in "module load" and "load".

Issue 8846

Modified:
    branches/1.4/main/cli.c

Modified: branches/1.4/main/cli.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/main/cli.c?view=diff&rev=51245&r1=51244&r2=51245
==============================================================================
--- branches/1.4/main/cli.c (original)
+++ branches/1.4/main/cli.c Thu Jan 18 12:42:00 2007
@@ -1243,12 +1243,33 @@
 	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];
 
 	if (pos != 1)
+		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 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] == '/')
@@ -1391,7 +1412,7 @@
 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 @@
 
 	{ { "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",



More information about the asterisk-commits mailing list