From 851b93fbc3d5d28851963bd412eb321742c5437f Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 28 Feb 2012 22:45:32 +0000 Subject: [syslog] Separate out generic line-based console functionality Abstract out the generic line-handling portions of the syslog putchar() routine, to allow use by other console types. Signed-off-by: Michael Brown --- src/net/udp/syslog.c | 44 ++++++++------------------------------------ 1 file changed, 8 insertions(+), 36 deletions(-) (limited to 'src/net/udp') diff --git a/src/net/udp/syslog.c b/src/net/udp/syslog.c index 775e3f4af..5a8a865a5 100644 --- a/src/net/udp/syslog.c +++ b/src/net/udp/syslog.c @@ -32,7 +32,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include #include #include -#include +#include #include /** The syslog server */ @@ -61,22 +61,15 @@ static struct interface syslogger = INTF_INIT ( syslogger_desc ); /** Syslog line buffer */ static char syslog_buffer[SYSLOG_BUFSIZE]; -/** Index into syslog line buffer */ -static unsigned int syslog_idx; +/** Syslog line console */ +static struct line_console syslog_line = { + .buffer = syslog_buffer, + .len = sizeof ( syslog_buffer ), +}; /** Syslog recursion marker */ static int syslog_entered; -/** Syslog ANSI escape sequence handlers */ -static struct ansiesc_handler syslog_ansiesc_handlers[] = { - { 0, NULL } -}; - -/** Syslog ANSI escape sequence context */ -static struct ansiesc_context syslog_ansiesc_ctx = { - .handlers = syslog_ansiesc_handlers, -}; - /** * Print a character to syslog console * @@ -89,31 +82,10 @@ static void syslog_putchar ( int character ) { if ( syslog_entered ) return; - /* Strip ANSI escape sequences */ - character = ansiesc_process ( &syslog_ansiesc_ctx, character ); - if ( character < 0 ) - return; - - /* Ignore carriage return */ - if ( character == '\r' ) + /* Fill line buffer */ + if ( line_putchar ( &syslog_line, character ) == 0 ) return; - /* Treat newline as a terminator */ - if ( character == '\n' ) - character = 0; - - /* Add character to buffer */ - syslog_buffer[syslog_idx++] = character; - - /* Do nothing more unless we reach end-of-line (or end-of-buffer) */ - if ( ( character != 0 ) && - ( syslog_idx < ( sizeof ( syslog_buffer ) - 1 /* NUL */ ) ) ) { - return; - } - - /* Reset to start of buffer */ - syslog_idx = 0; - /* Guard against re-entry */ syslog_entered = 1; -- cgit v1.2.3-55-g7522