From ce2e6b28e8879c7f1bf78cabb6889b4d58e1b526 Mon Sep 17 00:00:00 2001 From: Mark Spencer Date: Fri, 31 Dec 2004 00:04:41 +0000 Subject: [PATCH] Merge OEJ's channel type listing (bug #3187) with slight modifications git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4614 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- asterisk.c | 1 + asterisk.h | 2 ++ channel.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/asterisk.c b/asterisk.c index 76e98b3198..59e22cf380 100755 --- a/asterisk.c +++ b/asterisk.c @@ -1832,6 +1832,7 @@ int main(int argc, char *argv[]) printf(term_quit()); exit(1); } + ast_channels_init(); if (init_manager()) { printf(term_quit()); exit(1); diff --git a/asterisk.h b/asterisk.h index 08fc295d5a..e1cf447ac7 100755 --- a/asterisk.h +++ b/asterisk.h @@ -50,5 +50,7 @@ extern int reload_logger(int); extern int term_init(void); /* Provided by db.c */ extern int astdb_init(void); +/* Provided by channel.c */ +extern void ast_channels_init(void); #endif diff --git a/channel.c b/channel.c index c30f3838e7..8be15ea547 100755 --- a/channel.c +++ b/channel.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -49,6 +50,7 @@ #error "You need newer zaptel! Please cvs update zaptel" #endif #endif +#include "asterisk.h" /* uncomment if you have problems with 'monitoring' synchronized files */ #if 0 @@ -78,6 +80,32 @@ struct ast_channel *channels = NULL; AST_MUTEX_DEFINE_STATIC(chlock); +static int show_channeltypes(int fd, int argc, char *argv[]) +{ +#define FORMAT "%-7.7s %-50.50s\n" + struct chanlist *cl = backends; + ast_cli(fd, FORMAT, "Type", "Description"); + ast_cli(fd, FORMAT, "------", "-----------"); + if (ast_mutex_lock(&chlock)) { + ast_log(LOG_WARNING, "Unable to lock channel list\n"); + return -1; + } + while (cl) { + ast_cli(fd, FORMAT, cl->type, cl->description); + cl = cl->next; + } + ast_mutex_unlock(&chlock); + return RESULT_SUCCESS; + +} + +static char show_channeltypes_usage[] = +"Usage: show channeltypes\n" +" Shows available channel types registred in your Asterisk server."; + +static struct ast_cli_entry cli_show_channeltypes = + { { "show", "channeltypes", NULL }, show_channeltypes, "Show available channel types", show_channeltypes_usage }; + int ast_check_hangup(struct ast_channel *chan) { time_t myt; @@ -3011,3 +3039,7 @@ void ast_moh_cleanup(struct ast_channel *chan) ast_moh_cleanup_ptr(chan); } +void ast_channels_init(void) +{ + ast_cli_register(&cli_show_channeltypes); +}