summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2009-07-21 09:48:10 +0200
committerMichael Adam <obnox@samba.org>2009-08-04 09:46:39 +0200
commitbd81f50590b5f42c0f9bcbca79098f604f4e144f (patch)
treeced4f88f057f54dabba7f48161190ca50d4832e9
parentace21b84b7c27870b67806db1d8c5516d595376d (diff)
downloadsamba-bd81f50590b5f42c0f9bcbca79098f604f4e144f.tar.gz
samba-bd81f50590b5f42c0f9bcbca79098f604f4e144f.tar.xz
samba-bd81f50590b5f42c0f9bcbca79098f604f4e144f.zip
ctdbd: set debug_add hook to be able to use dump_data in the daemon.
Michael (This used to be ctdb commit afafab0ac6cac90c3f8614204b5b6df92e446728)
-rw-r--r--ctdb/server/ctdb_logging.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/ctdb/server/ctdb_logging.c b/ctdb/server/ctdb_logging.c
index bae27cf1ad0..c993cf09ef8 100644
--- a/ctdb/server/ctdb_logging.c
+++ b/ctdb/server/ctdb_logging.c
@@ -109,6 +109,25 @@ static void ctdb_logfile_log(const char *format, va_list ap)
}
}
+static void ctdb_logfile_log_add(const char *format, va_list ap)
+{
+ char *s = NULL;
+ int ret;
+
+ ret = vasprintf(&s, format, ap);
+ if (ret == -1) {
+ const char *errstr = "vasprintf failed\n";
+
+ write(log_state->fd, errstr, strlen(errstr));
+ return;
+ }
+
+ if (s) {
+ write(log_state->fd, s, strlen(s));
+ free(s);
+ }
+}
+
/*
choose the logfile location
*/
@@ -128,6 +147,7 @@ int ctdb_set_logfile(struct ctdb_context *ctdb, const char *logfile, bool use_sy
ctdb->log->use_syslog = true;
} else if (logfile == NULL || strcmp(logfile, "-") == 0) {
do_debug_v = ctdb_logfile_log;
+ do_debug_add_v = ctdb_logfile_log_add;
ctdb->log->fd = 1;
/* also catch stderr of subcommands to stdout */
ret = dup2(1, 2);
@@ -137,6 +157,7 @@ int ctdb_set_logfile(struct ctdb_context *ctdb, const char *logfile, bool use_sy
}
} else {
do_debug_v = ctdb_logfile_log;
+ do_debug_add_v = ctdb_logfile_log_add;
ctdb->log->fd = open(logfile, O_WRONLY|O_APPEND|O_CREAT, 0666);
if (ctdb->log->fd == -1) {