From: Martin Willi Date: Wed, 5 Mar 2014 15:28:38 +0000 (+0100) Subject: file-logger: Emulate setlinebuf() if not supported by using fflush() X-Git-Tag: 5.2.0dr6~24^2~31 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=55c2b47a904473c10cb62ac6e884a398080a9ed9;p=thirdparty%2Fstrongswan.git file-logger: Emulate setlinebuf() if not supported by using fflush() --- diff --git a/src/libcharon/bus/listeners/file_logger.c b/src/libcharon/bus/listeners/file_logger.c index c86cff132f..e3661bde6e 100644 --- a/src/libcharon/bus/listeners/file_logger.c +++ b/src/libcharon/bus/listeners/file_logger.c @@ -49,6 +49,11 @@ struct private_file_logger_t { */ FILE *out; + /** + * Flush after writing a line? + */ + bool flush_line; + /** * Maximum level to log, for each group */ @@ -137,6 +142,12 @@ METHOD(logger_t, log_, void, fprintf(this->out, "%.*s\n", (int)(next - current), current); current = next + 1; } +#ifndef HAVE_SETLINEBUF + if (this->flush_line) + { + fflush(this->out); + } +#endif /* !HAVE_SETLINEBUF */ this->mutex->unlock(this->mutex); this->lock->unlock(this->lock); } @@ -224,6 +235,7 @@ METHOD(file_logger_t, open_, void, this->lock->write_lock(this->lock); close_file(this); this->out = file; + this->flush_line = flush_line; this->lock->unlock(this->lock); }