From: Ray Strode Date: Tue, 5 Jun 2007 15:25:41 +0000 (-0400) Subject: i don't know X-Git-Tag: 0.1.0~216 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bc4b031f1c4a66e073b6cb150b5bc856d5b016f4;p=thirdparty%2Fplymouth.git i don't know --- diff --git a/src/main.c b/src/main.c index 88fa50ee..e175fbf7 100644 --- a/src/main.c +++ b/src/main.c @@ -62,6 +62,7 @@ on_system_initialized (state_t *state) { ply_log ("\nGot told system is initialized...\n"); ply_flush_log (); + pause (); } static void @@ -69,7 +70,14 @@ on_quit (state_t *state) { ply_log ("\nGot quit request, quitting...\n"); ply_flush_log (); - //ply_event_loop_exit (state->loop, 0); +// ply_event_loop_exit (state->loop, 0); +} + +static void +on_sigusr1 (state_t *state) +{ + ply_terminal_session_open_log (state->session, + "/var/log/bootmessages.log"); } static ply_boot_server_t * @@ -119,6 +127,11 @@ spawn_session (state_t *state, return NULL; } + ply_event_loop_watch_signal (state->loop, + SIGUSR1, + (ply_event_handler_t) on_sigusr1, + state); + return session; } @@ -145,9 +158,7 @@ main (int argc, return EX_UNAVAILABLE; } - ply_terminal_session_start_logging (state.session); exit_code = ply_event_loop_run (state.loop); - ply_terminal_session_stop_logging (state.session); ply_terminal_session_free (state.session); ply_event_loop_free (state.loop); diff --git a/src/ply-event-loop.h b/src/ply-event-loop.h index 6cc5d970..7a43d077 100644 --- a/src/ply-event-loop.h +++ b/src/ply-event-loop.h @@ -23,6 +23,7 @@ #define PLY_EVENT_LOOP_H #include +#include #include typedef struct _ply_event_loop ply_event_loop_t; diff --git a/src/ply-terminal-session.c b/src/ply-terminal-session.c index 48d7edcf..cc580add 100644 --- a/src/ply-terminal-session.c +++ b/src/ply-terminal-session.c @@ -59,6 +59,8 @@ struct _ply_terminal_session static bool ply_terminal_session_open_console (ply_terminal_session_t *session); static bool ply_terminal_session_execute (ply_terminal_session_t *session, bool look_in_path); +static void ply_terminal_session_start_logging (ply_terminal_session_t *session); +static void ply_terminal_session_stop_logging (ply_terminal_session_t *session); static bool ply_terminal_session_open_console (ply_terminal_session_t *session) @@ -259,6 +261,7 @@ ply_terminal_session_run (ply_terminal_session_t *session, session->is_running = true; session->done_handler = done_handler; session->done_handler_user_data = user_data; + ply_terminal_session_start_logging (session); return true; } @@ -306,8 +309,8 @@ ply_terminal_session_on_new_data (ply_terminal_session_t *session, { int i; for (i = 0; i < bytes_read; i++) - if (isprint (buffer[i])) - buffer[i] = toupper(buffer[i]); + if (isprint (buffer[i])) + buffer[i] = toupper(buffer[i]); ply_terminal_session_log_bytes (session, buffer, bytes_read); } @@ -325,9 +328,11 @@ ply_terminal_session_on_hangup (ply_terminal_session_t *session) if (session->done_handler != NULL) session->done_handler (session->done_handler_user_data, session); + + ply_terminal_session_stop_logging (session); } -void +static void ply_terminal_session_start_logging (ply_terminal_session_t *session) { int session_fd; @@ -348,9 +353,12 @@ ply_terminal_session_start_logging (ply_terminal_session_t *session) ply_terminal_session_on_new_data, (ply_event_handler_t) ply_terminal_session_on_hangup, session); + + ply_logger_set_output_fd (session->logger, + open ("/dev/tty1", O_RDWR)); } -void +static void ply_terminal_session_stop_logging (ply_terminal_session_t *session) { assert (session != NULL); @@ -360,6 +368,34 @@ ply_terminal_session_stop_logging (ply_terminal_session_t *session) ply_logger_toggle_logging (session->logger); } +bool +ply_terminal_session_open_log (ply_terminal_session_t *session, + const char *filename) +{ + bool log_is_opened; + + assert (session != NULL); + assert (filename != NULL); + assert (session->logger != NULL); + + ply_save_errno (); + log_is_opened = ply_logger_open_file (session->logger, filename); + if (log_is_opened) + ply_logger_flush (session->logger); + ply_restore_errno (); + + return log_is_opened; +} + +void +ply_terminal_session_close_log (ply_terminal_session_t *session) +{ + assert (session != NULL); + assert (session->logger != NULL); + + return ply_logger_close_file (session->logger); +} + #ifdef PLY_TERMINAL_SESSION_ENABLE_TEST #include @@ -370,6 +406,7 @@ ply_terminal_session_stop_logging (ply_terminal_session_t *session) static void on_finished (ply_event_loop_t *loop) { + ply_event_loop_exit (loop, 0); } int @@ -389,7 +426,6 @@ main (int argc, flags = PLY_TERMINAL_SESSION_FLAGS_RUN_IN_PARENT; flags |= PLY_TERMINAL_SESSION_FLAGS_LOOK_IN_PATH; - flags |= PLY_TERMINAL_SESSION_FLAGS_REDIRECT_CONSOLE; ply_terminal_session_attach_to_event_loop (session, loop); @@ -401,9 +437,9 @@ main (int argc, return errno; } - ply_terminal_session_start_logging (session); + ply_terminal_session_open_log (session, "foo.log"); + exit_code = ply_event_loop_run (loop); - ply_terminal_session_stop_logging (session); ply_terminal_session_free (session); diff --git a/src/ply-terminal-session.h b/src/ply-terminal-session.h index d76671da..3a35a45a 100644 --- a/src/ply-terminal-session.h +++ b/src/ply-terminal-session.h @@ -51,9 +51,9 @@ bool ply_terminal_session_run (ply_terminal_session_t *session, ply_terminal_session_done_handler_t done_handler, void *user_data); int ply_terminal_session_get_fd (ply_terminal_session_t *session); -void ply_terminal_session_start_logging (ply_terminal_session_t *session); -void ply_terminal_session_stop_logging (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); #endif #endif /* PLY_TERMINAL_SESSION_H */