]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
add hook to log all terminal session output to a user supplied buffer
authorRay Strode <rstrode@redhat.com>
Mon, 19 May 2008 22:33:54 +0000 (18:33 -0400)
committerRay Strode <rstrode@redhat.com>
Mon, 19 May 2008 22:33:54 +0000 (18:33 -0400)
src/libply/ply-terminal-session.c
src/libply/ply-terminal-session.h
src/libply/tests/ply-terminal-session-test.am

index f0dc4e78f4636cf9664b8a4ecfa8149d289883e6..8d4850bfc8917b568b8f6b246706c5feb6111954 100644 (file)
@@ -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>
index d30d4366c83c363f44a97978d31898a928a6b136..e11b2f373be9534571a5af4b5ba2e2e7aa419d26 100644 (file)
@@ -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 */
index d85b264aac7a16a3c8d1f732c45038758fcf3ef8..8206f39fb889094add94d70e2ab8180a004b5b12 100644 (file)
@@ -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                                     \