diff --git a/logging.c b/logging.c index 06f0678b..9e8b9f83 100644 --- a/logging.c +++ b/logging.c @@ -34,11 +34,21 @@ void logtraffic(void *handle, unsigned char c, int logmode) } /* - * Log an Event Log entry (used in SSH packet logging mode). + * Log an Event Log entry. Used in SSH packet logging mode; this is + * also as convenient a place as any to put the output of Event Log + * entries to stderr when a command-line tool is in verbose mode. + * (In particular, this is a better place to put it than in the + * front ends, because it only has to be done once for all + * platforms. Platforms which don't have a meaningful stderr can + * just avoid defining FLAG_STDERR. */ void log_eventlog(void *handle, char *event) { struct LogContext *ctx = (struct LogContext *)handle; + if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE)) { + fprintf(stderr, "%s\n", event); + fflush(stderr); + } if (cfg.logtype != LGTYP_PACKETS) return; if (!ctx->lgfp) diff --git a/ssh.c b/ssh.c index 0ac24d26..ccd3ea08 100644 --- a/ssh.c +++ b/ssh.c @@ -638,13 +638,7 @@ struct ssh_tag { int (*s_rdpkt) (Ssh ssh, unsigned char **data, int *datalen); }; -#define logevent(s) do { \ - logevent(ssh->frontend, s); \ - if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE)) { \ - fprintf(stderr, "%s\n", s); \ - fflush(stderr); \ - } \ -} while (0) +#define logevent(s) logevent(ssh->frontend, s) /* logevent, only printf-formatted. */ void logeventf(Ssh ssh, char *fmt, ...)