summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2008-05-19 18:33:54 -0400
committerRay Strode <rstrode@redhat.com>2008-05-19 18:33:54 -0400
commitb08048505bf41aa9db8a3c8257d6c8ed2d29792c (patch)
tree196c46973eb55de9b6c8f3f20fe164a4186c741c
parent3aca1c437010bc6ea6297ee350c2018e43b61d91 (diff)
downloadplymouth-b08048505bf41aa9db8a3c8257d6c8ed2d29792c.tar.gz
plymouth-b08048505bf41aa9db8a3c8257d6c8ed2d29792c.tar.xz
plymouth-b08048505bf41aa9db8a3c8257d6c8ed2d29792c.zip
add hook to log all terminal session output to a user supplied buffer
-rw-r--r--src/libply/ply-terminal-session.c11
-rw-r--r--src/libply/ply-terminal-session.h3
-rw-r--r--src/libply/tests/ply-terminal-session-test.am2
3 files changed, 16 insertions, 0 deletions
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 <termios.h>
#include <unistd.h>
+#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 <stdio.h>
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 <unistd.h>
#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 \