]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
Change window to take a vt number instead of a tty device file
authorRay Strode <rstrode@redhat.com>
Wed, 4 Jun 2008 18:20:18 +0000 (14:20 -0400)
committerRay Strode <rstrode@redhat.com>
Wed, 4 Jun 2008 19:05:19 +0000 (15:05 -0400)
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
src/ply-window.c
src/ply-window.h

index ec58affef3c2aed87b58b8d0c8c3e2f275f2de41..6b8f77cc8e83bd196dc188dd79ba07eea0a8a1e9 100644 (file)
@@ -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);
index 6e11481c2b58f4849530815b0e220049756b4e66..24ccbe00de2a0a841eef250934f4d545fcc13863 100644 (file)
@@ -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)
index 25c82ea4d5547f0eb3650474907be1ca1ecad4af..c362bf217d4811735c03a1757df0e3f397d1237f 100644 (file)
@@ -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,