From a566223bfeac536c8be03b38e66e8e075c1e49c5 Mon Sep 17 00:00:00 2001 From: markster Date: Fri, 7 Jan 2005 06:36:02 +0000 Subject: ODBC CLI improvements (bug #3220) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4702 f38db490-d61c-443f-a65b-d21fe96a405b --- res/res_odbc.c | 105 +++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 73 insertions(+), 32 deletions(-) (limited to 'res/res_odbc.c') diff --git a/res/res_odbc.c b/res/res_odbc.c index 520581a6d..469c56ea6 100755 --- a/res/res_odbc.c +++ b/res/res_odbc.c @@ -147,39 +147,28 @@ static int load_odbc_config(void) int odbc_dump_fd(int fd, odbc_obj * obj) { - ast_cli(fd, "\n\nName: %s\nDSN: %s\nConnected: %s\n\n", obj->name, obj->dsn, obj->up ? "yes" : "no"); + ast_cli(fd, "Name: %s\nDSN: %s\nConnected: %s\n", obj->name, obj->dsn, obj->up ? "yes" : "no"); return 0; } -static int odbc_usage(int fd) +static int odbc_connect_usage(int fd) { - ast_cli(fd, "\n\nusage odbc .. \n\n"); + ast_cli(fd, "usage odbc connect \n"); return 0; } -static int odbc_command(int fd, int argc, char **argv) +static int odbc_disconnect_usage(int fd) +{ + ast_cli(fd, "usage odbc disconnect \n"); + return 0; +} + +static int odbc_show_command(int fd, int argc, char **argv) { odbc_obj *obj; int x = 0; - if (!argv[1]) - return odbc_usage(fd); - - ast_cli(fd, "\n\n"); - - if (!strcmp(argv[1], "connect") || !strcmp(argv[1], "disconnect")) { - if (!argv[2]) - return odbc_usage(fd); - - obj = odbc_read(ODBC_REGISTRY, argv[2]); - if (obj) { - if (!strcmp(argv[1], "connect")) - odbc_obj_connect(obj); - - if (!strcmp(argv[1], "disconnect")) - odbc_obj_disconnect(obj); - } - - } else if (!strcmp(argv[1], "show")) { + + if (!strcmp(argv[1], "show")) { if (!argv[2] || (argv[2] && !strcmp(argv[2], "all"))) { for (x = 0; x < MAX_ODBC_HANDLES; x++) { if (!ODBC_REGISTRY[x].used) @@ -192,18 +181,66 @@ static int odbc_command(int fd, int argc, char **argv) if (obj) odbc_dump_fd(fd, obj); } + } + return 0; +} - } else { - return odbc_usage(fd); +static int odbc_disconnect_command(int fd, int argc, char **argv) +{ + odbc_obj *obj; + if (!strcmp(argv[1], "disconnect")) { + if (!argv[2]) + return odbc_disconnect_usage(fd); + + obj = odbc_read(ODBC_REGISTRY, argv[2]); + if (obj) { + odbc_obj_disconnect(obj); + } + } + return 0; +} + +static int odbc_connect_command(int fd, int argc, char **argv) +{ + odbc_obj *obj; + if (!argv[1]) + return odbc_connect_usage(fd); + + if (!strcmp(argv[1], "connect") || !strcmp(argv[1], "disconnect")) { + if (!argv[2]) + return odbc_connect_usage(fd); + + obj = odbc_read(ODBC_REGISTRY, argv[2]); + if (obj) { + odbc_obj_connect(obj); + } } - ast_cli(fd, "\n"); return 0; } -static struct ast_cli_entry odbc_command_struct = { - {"odbc", NULL}, odbc_command, - "Execute ODBC Command", "obdc .. ", NULL -}; + +static char connect_usage[] = +"Usage: odbc connect \n" +" Connect to ODBC DSN\n"; + +static char disconnect_usage[] = +"Usage: odbc connect \n" +" Disconnect from ODBC DSN\n"; + +static char show_usage[] = +"Usage: odbc show {DSN}\n" +" Show ODBC {DSN}\n" +" Specifying DSN will show that DSN else, all DSNs are shown\n"; + +static struct ast_cli_entry odbc_connect_struct = + { { "odbc", "connect", NULL }, odbc_connect_command, "Connect to ODBC DSN", connect_usage }; + + +static struct ast_cli_entry odbc_disconnect_struct = + { { "odbc", "disconnect", NULL }, odbc_disconnect_command, "Disconnect from ODBC DSN", disconnect_usage }; + +static struct ast_cli_entry odbc_show_struct = + { { "odbc", "show", NULL }, odbc_show_command, "Show ODBC DSN(s)", show_usage }; /* api calls */ @@ -372,7 +409,9 @@ int unload_module(void) { STANDARD_HANGUP_LOCALUSERS; odbc_destroy(); - ast_cli_unregister(&odbc_command_struct); + ast_cli_unregister(&odbc_disconnect_struct); + ast_cli_unregister(&odbc_connect_struct); + ast_cli_unregister(&odbc_show_struct); ast_log(LOG_NOTICE, "res_odbc unloaded.\n"); return 0; } @@ -381,7 +420,9 @@ int load_module(void) { odbc_init(); load_odbc_config(); - ast_cli_register(&odbc_command_struct); + ast_cli_register(&odbc_disconnect_struct); + ast_cli_register(&odbc_connect_struct); + ast_cli_register(&odbc_show_struct); ast_log(LOG_NOTICE, "res_odbc loaded.\n"); return 0; } -- cgit v1.2.3