aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcli.c25
-rwxr-xr-xinclude/asterisk/module.h2
-rwxr-xr-xloader.c13
3 files changed, 25 insertions, 15 deletions
diff --git a/cli.c b/cli.c
index 3eb8dda79..983c25dea 100755
--- a/cli.c
+++ b/cli.c
@@ -213,16 +213,20 @@ static int handle_unload(int fd, int argc, char *argv[])
AST_MUTEX_DEFINE_STATIC(climodentrylock);
static int climodentryfd = -1;
-static int modlist_modentry(char *module, char *description, int usecnt)
+static int modlist_modentry(char *module, char *description, int usecnt, char *like)
{
- ast_cli(climodentryfd, MODLIST_FORMAT, module, description, usecnt);
+ /* Comparing the like with the module */
+ if ( strstr(module,like) != NULL) {
+ ast_cli(climodentryfd, MODLIST_FORMAT, module, description, usecnt);
+ return 1;
+
+ }
return 0;
}
static char modlist_help[] =
-"Usage: show modules\n"
-" Shows Asterisk modules currently in use, and usage "
-"statistics.\n";
+"Usage: show modules [like keyword]\n"
+" Shows Asterisk modules currently in use, and usage statistics.\n";
static char version_help[] =
"Usage: show version\n"
@@ -332,12 +336,19 @@ static int handle_showuptime(int fd, int argc, char *argv[])
static int handle_modlist(int fd, int argc, char *argv[])
{
- if (argc != 2)
+ char *like = "";
+ if (argc == 3)
return RESULT_SHOWUSAGE;
+ else if (argc >= 4) {
+ if ( strcmp(argv[2],"like") )
+ return RESULT_SHOWUSAGE;
+ like = argv[3];
+ }
+
ast_mutex_lock(&climodentrylock);
climodentryfd = fd;
ast_cli(fd, MODLIST_FORMAT2, "Module", "Description", "Use Count");
- ast_cli(fd,"%d modules loaded\n",ast_update_module_list(modlist_modentry));
+ ast_cli(fd,"%d modules loaded\n",ast_update_module_list(modlist_modentry,like));
climodentryfd = -1;
ast_mutex_unlock(&climodentrylock);
return RESULT_SUCCESS;
diff --git a/include/asterisk/module.h b/include/asterisk/module.h
index 87aa590f9..d8e5e1285 100755
--- a/include/asterisk/module.h
+++ b/include/asterisk/module.h
@@ -114,7 +114,7 @@ void ast_update_use_count(void);
* For each of the modules loaded, modentry will be executed with the resource, description,
* and usecount values of each particular module.
*/
-int ast_update_module_list(int (*modentry)(char *module, char *description, int usecnt));
+int ast_update_module_list(int (*modentry)(char *module, char *description, int usecnt, char *like), char *like);
//! Ask this procedure to be run with modules have been updated
/*!
diff --git a/loader.c b/loader.c
index 09d406541..b042301bf 100755
--- a/loader.c
+++ b/loader.c
@@ -314,16 +314,16 @@ int ast_load_resource(char *resource_name)
ast_verbose(VERBOSE_PREFIX_1 "Loaded %s => (%s)\n", fn, m->description());
}
- // add module 'm' to end of module_list chain
- // so reload commands will be issued in same order modules were loaded
+ /* add module 'm' to end of module_list chain
+ so reload commands will be issued in same order modules were loaded */
m->next = NULL;
if (module_list == NULL) {
- // empty list so far, add at front
+ /* empty list so far, add at front */
module_list = m;
}
else {
struct module *i;
- // find end of chain, and add there
+ /* find end of chain, and add there */
for (i = module_list; i->next; i = i->next)
;
i->next = m;
@@ -460,7 +460,7 @@ void ast_update_use_count(void)
}
-int ast_update_module_list(int (*modentry)(char *module, char *description, int usecnt))
+int ast_update_module_list(int (*modentry)(char *module, char *description, int usecnt, char *like), char *like)
{
struct module *m;
int unlock = -1;
@@ -469,9 +469,8 @@ int ast_update_module_list(int (*modentry)(char *module, char *description, int
unlock = 0;
m = module_list;
while(m) {
- modentry(m->resource, m->description(), m->usecount());
+ total_mod_loaded += modentry(m->resource, m->description(), m->usecount(), like);
m = m->next;
- total_mod_loaded++;
}
if (unlock)
ast_mutex_unlock(&modlock);