[asterisk-commits] rizzo: branch rizzo/astobj2 r47592 - in
/team/rizzo/astobj2: include/asterisk...
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Tue Nov 14 03:23:50 MST 2006
Author: rizzo
Date: Tue Nov 14 04:23:49 2006
New Revision: 47592
URL: http://svn.digium.com/view/asterisk?view=rev&rev=47592
Log:
convert "core set debug" to the new style, to see how it looks.
On passing, add an argument to the NEW_CLI macro so we are forced
to put a summary for the command.
Modified:
team/rizzo/astobj2/include/asterisk/cli.h
team/rizzo/astobj2/main/astobj2.c
team/rizzo/astobj2/main/cli.c
Modified: team/rizzo/astobj2/include/asterisk/cli.h
URL: http://svn.digium.com/view/asterisk/team/rizzo/astobj2/include/asterisk/cli.h?view=diff&rev=47592&r1=47591&r2=47592
==============================================================================
--- team/rizzo/astobj2/include/asterisk/cli.h (original)
+++ team/rizzo/astobj2/include/asterisk/cli.h Tue Nov 14 04:23:49 2006
@@ -81,7 +81,8 @@
int new_setdebug(int fd, int argc, char *argv[]);
...
- NEW_CLI(new_setdebug) // this is how we create the entry to register
+ // this is how we create the entry to register
+ NEW_CLI(new_setdebug, "short description")
...
Called with the default arguments (argc > 0), the new_handler implements
@@ -179,7 +180,7 @@
AST_LIST_ENTRY(ast_cli_entry) list;
};
-#define NEW_CLI(fn) { .handler = (old_cli_fn)fn }
+#define NEW_CLI(fn, txt) { .handler = (old_cli_fn)fn, .summary = txt }
/* argument for new-style CLI handler */
struct ast_cli_args {
Modified: team/rizzo/astobj2/main/astobj2.c
URL: http://svn.digium.com/view/asterisk/team/rizzo/astobj2/main/astobj2.c?view=diff&rev=47592&r1=47591&r2=47592
==============================================================================
--- team/rizzo/astobj2/main/astobj2.c (original)
+++ team/rizzo/astobj2/main/astobj2.c Tue Nov 14 04:23:49 2006
@@ -702,7 +702,7 @@
{ { "astobj2", "stats", NULL },
handle_astobj2_stats, "Print astobj2 statistics", },
{ { "astobj2", "test", NULL } , handle_astobj2_test, "Test astobj2", },
- NEW_CLI(test_new_cli),
+ NEW_CLI(test_new_cli, "sample new-cli command"),
};
int astobj2_init(void);
Modified: team/rizzo/astobj2/main/cli.c
URL: http://svn.digium.com/view/asterisk/team/rizzo/astobj2/main/cli.c?view=diff&rev=47592&r1=47591&r2=47592
==============================================================================
--- team/rizzo/astobj2/main/cli.c (original)
+++ team/rizzo/astobj2/main/cli.c Tue Nov 14 04:23:49 2006
@@ -111,13 +111,6 @@
" no messages should be displayed. Equivalent to -v[v[v...]]\n"
" on startup\n";
-static char debug_help[] =
-"Usage: core set debug <level> [filename]\n"
-" Sets level of core debug messages to be displayed. 0 means\n"
-" no messages should be displayed. Equivalent to -d[d[d...]]\n"
-" on startup. If filename is specified, debugging will be\n"
-" limited to just that file.\n";
-
static char nodebug_help[] =
"Usage: core set no debug\n"
" Turns off core debug messages.\n";
@@ -211,67 +204,69 @@
static int handle_debug(int fd, int argc, char *argv[])
{
+ struct ast_cli_entry *e = (struct ast_cli_entry *)argv[-1];
int oldval = option_debug;
int newlevel;
int atleast = 0;
char *filename = '\0';
- if ((argc < 4) || (argc > 6))
- return RESULT_SHOWUSAGE;
-
- if (!strcasecmp(argv[3], "atleast"))
- atleast = 1;
-
- if (!atleast) {
- if (argc > 5)
+ switch(argc) {
+ case CLI_CMD_STRING:
+ return (int)"core set debug";
+
+ case CLI_USAGE:
+ return (int)
+ "Usage: core set debug [atleast] <level> [filename]\n"
+ " Sets level of core debug messages to be displayed. 0 means\n"
+ " no messages should be displayed. Equivalent to -d[d[d...]]\n"
+ " on startup. If filename is specified, debugging will be\n"
+ " limited to just that file.\n";
+
+ case CLI_GENERATE:
+ /* at the moment don't do anything, though could well explode the
+ * list of available filenames
+ */
+ return (int)NULL;
+
+ default: /* we are guaranteed to be called with argc >= e->args; */
+
+ if (argc < e->args + 1)
return RESULT_SHOWUSAGE;
- if (sscanf(argv[3], "%d", &newlevel) != 1)
+ if (!strcasecmp(argv[e->args], "atleast"))
+ atleast = 1;
+ if (argc > e->args + atleast + 2)
return RESULT_SHOWUSAGE;
-
- if (argc == 4) {
+ if (sscanf(argv[e->args + atleast], "%d", &newlevel) != 1)
+ return RESULT_SHOWUSAGE;
+
+ if (argc == e->args + atleast + 1) {
debug_filename[0] = '\0';
} else {
- filename = argv[4];
- ast_copy_string(debug_filename, filename, sizeof(debug_filename));
- }
-
- option_debug = newlevel;
- } else {
- if (argc < 5 || argc > 6)
- return RESULT_SHOWUSAGE;
-
- if (sscanf(argv[4], "%d", &newlevel) != 1)
- return RESULT_SHOWUSAGE;
-
- if (argc == 6) {
- debug_filename[0] = '\0';
- } else {
- filename = argv[4];
- ast_copy_string(debug_filename, filename, sizeof(debug_filename));
- }
-
- if (newlevel > option_debug)
+ ast_copy_string(debug_filename, argv[e->args + atleast + 1], sizeof(debug_filename));
+ }
+
+ if (!atleast || newlevel > option_debug)
option_debug = newlevel;
- }
-
- if (oldval > 0 && option_debug == 0)
- ast_cli(fd, "Core debug is now OFF\n");
- else if (option_debug > 0) {
- if (filename) {
- if (oldval == option_debug)
- ast_cli(fd, "Core debug is at least %d, file '%s'\n", option_debug, filename);
- else
- ast_cli(fd, "Core debug was %d and is now %d, file '%s'\n", oldval, option_debug, filename);
- } else {
- if (oldval == option_debug)
- ast_cli(fd, "Core debug is at least %d\n", option_debug);
- else
- ast_cli(fd, "Core debug was %d and is now %d\n", oldval, option_debug);
- }
- }
-
- return RESULT_SUCCESS;
+
+ if (oldval > 0 && option_debug == 0)
+ ast_cli(fd, "Core debug is now OFF\n");
+ else if (option_debug > 0) {
+ if (filename) {
+ if (oldval == option_debug)
+ ast_cli(fd, "Core debug is at least %d, file '%s'\n", option_debug, filename);
+ else
+ ast_cli(fd, "Core debug was %d and is now %d, file '%s'\n", oldval, option_debug, filename);
+ } else {
+ if (oldval == option_debug)
+ ast_cli(fd, "Core debug is at least %d\n", option_debug);
+ else
+ ast_cli(fd, "Core debug was %d and is now %d\n", oldval, option_debug);
+ }
+ }
+
+ return RESULT_SUCCESS;
+ }
}
static int handle_nodebug(int fd, int argc, char *argv[])
@@ -987,9 +982,7 @@
handle_nodebugchan, "Disable debugging on a channel",
nodebugchan_help, complete_ch_3 },
- { { "core", "set", "debug", NULL },
- handle_debug, "Set level of debug chattiness",
- debug_help },
+ NEW_CLI(handle_debug, "Set level of debug chattiness"),
{ { "core", "set", "no", "debug", NULL },
handle_nodebug, "Turns off debug chattiness",
@@ -1202,8 +1195,6 @@
}
*dst++ = NULL;
e->usage = (char *)(e->handler(-1, CLI_USAGE, args+1));
- ast_verbose("running new-style CLI entry for %s\n", e->command);
- sleep(1);
}
for (i = 0; e->cmda[i]; i++)
;
More information about the asterisk-commits
mailing list