mirror of
https://gitlab.freedesktop.org/plymouth/plymouth.git
synced 2026-05-07 16:38:37 +02:00
i don't know
This commit is contained in:
parent
94efb1940a
commit
bc4b031f1c
4 changed files with 61 additions and 13 deletions
17
src/main.c
17
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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue