From: Ray Strode Date: Mon, 19 May 2008 22:33:54 +0000 (-0400) Subject: add hook to log all terminal session output to a user supplied buffer X-Git-Tag: 0.1.0~105 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b08048505bf41aa9db8a3c8257d6c8ed2d29792c;p=thirdparty%2Fplymouth.git add hook to log all terminal session output to a user supplied buffer --- diff --git a/src/libply/ply-terminal-session.c b/src/libply/ply-terminal-session.c index f0dc4e78..8d4850bf 100644 --- a/src/libply/ply-terminal-session.c +++ b/src/libply/ply-terminal-session.c @@ -37,6 +37,7 @@ #include #include +#include "ply-buffer.h" #include "ply-event-loop.h" #include "ply-logger.h" #include "ply-terminal.h" @@ -46,6 +47,7 @@ struct _ply_terminal_session { ply_terminal_t *terminal; ply_logger_t *logger; + ply_buffer_t *output_buffer; ply_event_loop_t *loop; char **argv; @@ -322,6 +324,7 @@ ply_terminal_session_log_bytes (ply_terminal_session_t *session, assert (number_of_bytes != 0); ply_logger_inject_bytes (session->logger, bytes, number_of_bytes); + ply_buffer_append_bytes (session->output_buffer, bytes, number_of_bytes); } static void @@ -418,6 +421,14 @@ ply_terminal_session_close_log (ply_terminal_session_t *session) return ply_logger_close_file (session->logger); } +void +ply_terminal_session_set_output_buffer (ply_terminal_session_t *session, + ply_buffer_t *buffer) +{ + assert (session != NULL); + session->output_buffer = buffer; +} + #ifdef PLY_TERMINAL_SESSION_ENABLE_TEST #include diff --git a/src/libply/ply-terminal-session.h b/src/libply/ply-terminal-session.h index d30d4366..e11b2f37 100644 --- a/src/libply/ply-terminal-session.h +++ b/src/libply/ply-terminal-session.h @@ -27,6 +27,7 @@ #include #include "ply-event-loop.h" +#include "ply-buffer.h" typedef struct _ply_terminal_session ply_terminal_session_t; @@ -60,6 +61,8 @@ int ply_terminal_session_get_fd (ply_terminal_session_t *session); bool ply_terminal_session_open_log (ply_terminal_session_t *session, const char *filename); void ply_terminal_session_close_log (ply_terminal_session_t *session); +void ply_terminal_session_set_output_buffer (ply_terminal_session_t *session, + ply_buffer_t *buffer); #endif #endif /* PLY_TERMINAL_SESSION_H */ diff --git a/src/libply/tests/ply-terminal-session-test.am b/src/libply/tests/ply-terminal-session-test.am index d85b264a..8206f39f 100644 --- a/src/libply/tests/ply-terminal-session-test.am +++ b/src/libply/tests/ply-terminal-session-test.am @@ -6,6 +6,8 @@ ply_terminal_session_test_LDADD = $(PLYMOUTH_LIBS) ply_terminal_session_test_SOURCES = \ $(srcdir)/../ply-utils.h \ $(srcdir)/../ply-utils.c \ + $(srcdir)/../ply-buffer.h \ + $(srcdir)/../ply-buffer.c \ $(srcdir)/../ply-logger.h \ $(srcdir)/../ply-logger.c \ $(srcdir)/../ply-list.h \