};
ply_window_t *
-ply_window_new (int vt_number)
+ply_window_new (const char *tty_name)
{
ply_window_t *window;
window->line_buffer = ply_buffer_new ();
window->frame_buffer = ply_frame_buffer_new (NULL);
window->loop = NULL;
- asprintf (&window->tty_name, "/dev/tty%d", vt_number);
+ if (tty_name != NULL)
+ {
+ if (strncmp (tty_name, "/dev/", strlen ("/dev/")) == 0)
+ window->tty_name = strdup (tty_name);
+ else
+ asprintf (&window->tty_name, "/dev/%s", tty_name);
+ }
window->tty_fd = -1;
- window->vt_number = vt_number;
return window;
}
assert (window->tty_name != NULL);
assert (window->tty_fd < 0);
- if (window->vt_number == 0)
+ if (window->tty_name == NULL)
{
char tty_name[512] = "";
window->vt_number = get_active_vt ();
- free (window->tty_name);
- window->tty_name = NULL;
if (readlink ("/proc/self/fd/0", tty_name, sizeof (tty_name) - 1) < 0)
return false;
ply_event_loop_t *loop;
ply_window_t *window;
int exit_code;
- int vt_number;
+ char *tty_name;
exit_code = 0;
loop = ply_event_loop_new ();
- vt_number = 0;
if (argc > 1)
- vt_number = atoi (argv[1]);
-
- if (vt_number <= 0)
- vt_number = 1;
+ tty_name = argv[1];
+ else
+ tty_name = "/dev/tty1";
- window = ply_window_new (vt_number);
+ window = ply_window_new (tty_name);
ply_window_attach_to_event_loop (window, loop);
ply_window_set_keyboard_input_handler (window,
(ply_window_keyboard_input_handler_t)
} ply_window_color_t;
#ifndef PLY_HIDE_FUNCTION_DECLARATIONS
-ply_window_t *ply_window_new (int vt_number);
+ply_window_t *ply_window_new (const char *name);
void ply_window_free (ply_window_t *window);
void ply_window_set_keyboard_input_handler (ply_window_t *window,
static ply_boot_splash_t *start_boot_splash (state_t *state,
const char *module_path);
-static ply_window_t *create_window (state_t *state, int vt_number);
+static ply_window_t *create_window (state_t *state,
+ const char *tty_name);
static void
on_session_output (state_t *state,
{
if (state->window == NULL)
- state->window = create_window (state, 1);
+ state->window = create_window (state, state->console);
if (plymouth_should_show_default_splash (state))
show_default_splash (state);
static ply_window_t *
create_window (state_t *state,
- int vt_number)
+ const char *tty_name)
{
ply_window_t *window;
- ply_trace ("creating window on vt %d", vt_number);
- window = ply_window_new (vt_number);
+ ply_trace ("creating window on %s", tty_name != NULL? tty_name : "active vt");
+ window = ply_window_new (tty_name);
ply_trace ("attaching window to event loop");
ply_window_attach_to_event_loop (window, state->loop);