From b08048505bf41aa9db8a3c8257d6c8ed2d29792c Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 19 May 2008 18:33:54 -0400 Subject: add hook to log all terminal session output to a user supplied buffer --- src/libply/ply-terminal-session.c | 11 +++++++++++ src/libply/ply-terminal-session.h | 3 +++ src/libply/tests/ply-terminal-session-test.am | 2 ++ 3 files changed, 16 insertions(+) (limited to 'src') diff --git a/src/libply/ply-terminal-session.c b/src/libply/ply-terminal-session.c index f0dc4e7..8d4850b 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 d30d436..e11b2f3 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 d85b264..8206f39 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 \ -- cgit