diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2010-06-11 10:34:50 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2010-06-11 10:34:50 +0300 |
commit | 73b766be9231193b79ac7aaa9ca1ba4b19a20a50 (patch) | |
tree | 10365466c94c1d3785a78c172bf5b745b5979167 | |
parent | 7a0e63726f1722492f92cd92723f1be46a89e04f (diff) | |
download | smap-73b766be9231193b79ac7aaa9ca1ba4b19a20a50.tar.gz smap-73b766be9231193b79ac7aaa9ca1ba4b19a20a50.tar.bz2 |
Implement debugging in smapc.
* smapc.c: Implement debugging commands.
* smapccmd.opt: New option --debug (-x).
* smapd.c: Minor change.
-rw-r--r-- | src/smapc.c | 29 | ||||
-rw-r--r-- | src/smapccmd.opt | 7 | ||||
-rw-r--r-- | src/smapd.c | 4 |
3 files changed, 36 insertions, 4 deletions
diff --git a/src/smapc.c b/src/smapc.c index 97d3cd8..a403813 100644 --- a/src/smapc.c +++ b/src/smapc.c @@ -234,8 +234,18 @@ smapc_connect(const char *url) strerror(rc)); close(fd); return NULL; - } else - curserver = estrdup(url); + } + curserver = estrdup(url); + if (smap_debug_np(0, 10)) { + char *pfx[] = { "S", "C" }; + int idx = 0; + smap_stream_ioctl(iostr, + SMAP_IOCTL_SET_DEBUG_IDX, + &idx); + smap_stream_ioctl(iostr, + SMAP_IOCTL_SET_DEBUG_PFX, + pfx); + } } return iostr; } @@ -363,6 +373,19 @@ cmd_quiet(int argc, char **argv) return 0; } +static int +cmd_debug(int argc, char **argv) +{ + int i; + + for (i = 1; i < argc; i++) { + if (smap_debug_set(argv[i])) + smap_error("invalid debug specification: %s", argv[i]); + } + return 0; +} + + static struct smapc_cmd smapc_cmd_tab[] = { { "help", 1, 1, cmd_help, NULL, "show command summary" }, { "quit", 1, 1, cmd_quit, NULL, "quit the shell" }, @@ -372,6 +395,7 @@ static struct smapc_cmd smapc_cmd_tab[] = { { "open", 2, 2, cmd_open, "URL", "open connection" }, { "close", 1, 1, cmd_close, NULL, "close connection" }, { "source", 1, 2, cmd_source, "[IP]", "query or set source IP address" }, + { "debug", 1, 0, cmd_debug, "SPEC", "set debug level" }, { "prefix", 1, 2, cmd_prefix, "[CHAR]", "set or query command prefix" }, { "prompt", 1, 2, cmd_prompt, "[STRING]", @@ -649,6 +673,7 @@ main(int argc, char **argv) smap_set_program_name(argv[0]); smap_openlog_stderr(smapc_trace_option); batch_mode = !isatty(0); + smap_debug_alloc("smap"); get_options(argc, argv, &n); argc -= n; argv += n; diff --git a/src/smapccmd.opt b/src/smapccmd.opt index 1681747..bc7badf 100644 --- a/src/smapccmd.opt +++ b/src/smapccmd.opt @@ -18,6 +18,13 @@ OPTIONS_BEGIN(gnu, "smapc", [<A socket map client.>], [<[URL] [map [key]]]>]) +OPTION(debug, x, LEVEL-SPEC, + [<set debug verbosity level.>]) +BEGIN + if (smap_debug_set(optarg)) + smap_error("invalid debug specification: %s", optarg); +END + OPTION(trace, T,, [<trace queries>]) BEGIN diff --git a/src/smapd.c b/src/smapd.c index e04498d..2d2a5c6 100644 --- a/src/smapd.c +++ b/src/smapd.c @@ -262,13 +262,13 @@ smap_daemon(int argc, char **argv) smap_error("failed to remove pidfile %s: %s", pidfile, strerror(errno)); if (restart) { - smap_error(_("smap restarting")); + smap_error(_("smapd restarting")); close_fds_above(1); execv(argv[0], argv); smap_log_init(); smap_error(_("cannot restart: %s"), strerror(errno)); } else - smap_error(_("smap terminating")); + smap_error(_("smapd terminating")); } void |