diff options
author | Michael Adam <obnox@samba.org> | 2009-07-21 09:48:10 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2009-08-04 09:46:39 +0200 |
commit | bd81f50590b5f42c0f9bcbca79098f604f4e144f (patch) | |
tree | ced4f88f057f54dabba7f48161190ca50d4832e9 /ctdb/server/ctdb_logging.c | |
parent | ace21b84b7c27870b67806db1d8c5516d595376d (diff) | |
download | samba-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)
Diffstat (limited to 'ctdb/server/ctdb_logging.c')
-rw-r--r-- | ctdb/server/ctdb_logging.c | 21 |
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) { |