diff --git a/include/nuttx/streams.h b/include/nuttx/streams.h index bb7ee561c85..979eedbeab3 100644 --- a/include/nuttx/streams.h +++ b/include/nuttx/streams.h @@ -230,6 +230,7 @@ struct lib_syslogstream_s #ifdef CONFIG_SYSLOG_BUFFER FAR struct iob_s *iob; #endif + int last_ch; }; /* LZF compressed stream pipeline */ @@ -455,11 +456,7 @@ void lib_syslogstream_open(FAR struct lib_syslogstream_s *stream); * ****************************************************************************/ -#ifdef CONFIG_SYSLOG_BUFFER void lib_syslogstream_close(FAR struct lib_syslogstream_s *stream); -#else -# define lib_syslogstream_close(s) -#endif /**************************************************************************** * Name: lib_lzfoutstream diff --git a/libs/libc/stream/lib_syslogstream.c b/libs/libc/stream/lib_syslogstream.c index 0ee5f0a9f50..f981d7afbcc 100644 --- a/libs/libc/stream/lib_syslogstream.c +++ b/libs/libc/stream/lib_syslogstream.c @@ -111,16 +111,17 @@ static void syslogstream_addchar(FAR struct lib_syslogstream_s *stream, static void syslogstream_putc(FAR struct lib_outstream_s *this, int ch) { + FAR struct lib_syslogstream_s *stream = + (FAR struct lib_syslogstream_s *)this; + + DEBUGASSERT(stream != NULL); + stream->last_ch = ch; + /* Discard carriage returns */ if (ch != '\r') { #ifdef CONFIG_SYSLOG_BUFFER - FAR struct lib_syslogstream_s *stream = - (FAR struct lib_syslogstream_s *)this; - - DEBUGASSERT(stream != NULL); - /* Do we have an IO buffer? */ if (stream->iob != NULL) @@ -213,11 +214,16 @@ void lib_syslogstream_open(FAR struct lib_syslogstream_s *stream) * ****************************************************************************/ -#ifdef CONFIG_SYSLOG_BUFFER void lib_syslogstream_close(FAR struct lib_syslogstream_s *stream) { DEBUGASSERT(stream != NULL); + if (stream->last_ch != '\n') + { + syslogstream_putc(&stream->public, '\n'); + } + +#ifdef CONFIG_SYSLOG_BUFFER /* Verify that there is an IOB attached (there should be) */ if (stream->iob != NULL) @@ -231,5 +237,5 @@ void lib_syslogstream_close(FAR struct lib_syslogstream_s *stream) iob_free(stream->iob); stream->iob = NULL; } -} #endif +}