aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2010-06-11 10:34:50 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2010-06-11 10:34:50 +0300
commit73b766be9231193b79ac7aaa9ca1ba4b19a20a50 (patch)
tree10365466c94c1d3785a78c172bf5b745b5979167
parent7a0e63726f1722492f92cd92723f1be46a89e04f (diff)
downloadsmap-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.c29
-rw-r--r--src/smapccmd.opt7
-rw-r--r--src/smapd.c4
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

Return to:

Send suggestions and report system problems to the System administrator.