i don't know

This commit is contained in:
Ray Strode 2007-06-05 11:25:41 -04:00
parent 94efb1940a
commit bc4b031f1c
4 changed files with 61 additions and 13 deletions

View file

@ -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);

View file

@ -23,6 +23,7 @@
#define PLY_EVENT_LOOP_H
#include <stdbool.h>
#include <signal.h>
#include <stdint.h>
typedef struct _ply_event_loop ply_event_loop_t;

View file

@ -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 <stdio.h>
@ -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);

View file

@ -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 */