From 34d6c76b2f003dbd0f49d2470ec74c4e342bcd0d Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 4 Jun 2008 14:20:18 -0400 Subject: Change window to take a vt number instead of a tty device file We are going to want to change to the vt of the tty that we're using for the window. This means we need to know the vt number instead of the device file. From the number we can derive the device filename. --- src/main.c | 8 ++++---- src/ply-window.c | 20 ++++++++++++-------- src/ply-window.h | 2 +- 3 files changed, 17 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index ec58aff..6b8f77c 100644 --- a/src/main.c +++ b/src/main.c @@ -180,12 +180,12 @@ on_escape_pressed (state_t *state) static ply_window_t * create_window (state_t *state, - const char *tty) + int vt_number) { ply_window_t *window; - ply_trace ("creating window for %s", tty); - window = ply_window_new (tty); + ply_trace ("creating window on vt %d", vt_number); + window = ply_window_new (vt_number); ply_trace ("attaching window to event loop"); ply_window_attach_to_event_loop (window, state->loop); @@ -448,7 +448,7 @@ main (int argc, return EX_UNAVAILABLE; } - state.window = create_window (&state, "/dev/tty1"); + state.window = create_window (&state, 1); ply_trace ("entering event loop"); exit_code = ply_event_loop_run (state.loop); diff --git a/src/ply-window.c b/src/ply-window.c index 6e11481..24ccbe0 100644 --- a/src/ply-window.c +++ b/src/ply-window.c @@ -64,6 +64,7 @@ struct _ply_window char *tty_name; int tty_fd; + int vt_number; ply_fd_watch_t *tty_fd_watch; ply_window_mode_t mode; @@ -85,19 +86,20 @@ struct _ply_window }; ply_window_t * -ply_window_new (const char *tty_name) +ply_window_new (int vt_number) { ply_window_t *window; - assert (tty_name != NULL); + assert (vt_number > 0); window = calloc (1, sizeof (ply_window_t)); window->keyboard_input_buffer = ply_buffer_new (); window->line_buffer = ply_buffer_new (); window->frame_buffer = ply_frame_buffer_new (NULL); window->loop = NULL; - window->tty_name = strdup (tty_name); + asprintf (&window->tty_name, "/dev/tty%d", vt_number); window->tty_fd = -1; + window->vt_number = vt_number; return window; } @@ -486,18 +488,20 @@ main (int argc, ply_event_loop_t *loop; ply_window_t *window; int exit_code; - const char *tty_name; + int vt_number; exit_code = 0; loop = ply_event_loop_new (); + vt_number = 0; if (argc > 1) - tty_name = argv[1]; - else - tty_name = "/dev/tty1"; + vt_number = atoi (argv[1]); - window = ply_window_new (tty_name); + if (vt_number <= 0) + vt_number = 1; + + window = ply_window_new (vt_number); ply_window_attach_to_event_loop (window, loop); ply_window_set_keyboard_input_handler (window, (ply_window_keyboard_input_handler_t) diff --git a/src/ply-window.h b/src/ply-window.h index 25c82ea..c362bf2 100644 --- a/src/ply-window.h +++ b/src/ply-window.h @@ -49,7 +49,7 @@ typedef enum } ply_window_mode_t; #ifndef PLY_HIDE_FUNCTION_DECLARATIONS -ply_window_t *ply_window_new (const char *tty_name); +ply_window_t *ply_window_new (int vt_number); void ply_window_free (ply_window_t *window); void ply_window_set_keyboard_input_handler (ply_window_t *window, -- cgit