return terminal->vt_number;
}
-static bool
-set_active_vt (ply_terminal_t *terminal,
- int vt_number)
-{
- if (ioctl (terminal->fd, VT_ACTIVATE, vt_number) < 0)
- return false;
-
- return true;
-}
-
static bool
wait_for_vt_to_become_active (ply_terminal_t *terminal,
int vt_number)
if (terminal->is_active)
return true;
- if (!set_active_vt (terminal, terminal->vt_number)) {
+ if (!ply_change_to_vt_with_fd (terminal->vt_number, terminal->fd)) {
ply_trace ("unable to set active vt to %d: %m",
terminal->vt_number);
return false;
if (ply_terminal_is_active (terminal)) {
ply_trace ("Attempting to set active vt back to %d from %d",
terminal->initial_vt_number, old_vt_number);
- if (!set_active_vt (terminal, terminal->initial_vt_number)) {
+ if (!ply_change_to_vt_with_fd (terminal->initial_vt_number, terminal->fd)) {
ply_trace ("Couldn't move console to initial vt: %m");
return false;
}
return lower_bound + offset;
}
+bool
+ply_change_to_vt_with_fd (int vt_number,
+ int tty_fd)
+{
+ if (ioctl (tty_fd, VT_ACTIVATE, vt_number) < 0)
+ return false;
+
+ return true;
+}
+
+bool
+ply_change_to_vt (int vt_number)
+{
+ int fd;
+ bool changed_vt;
+
+ fd = open ("/dev/tty0", O_RDWR);
+
+ if (fd < 0)
+ return false;
+
+ ply_save_errno ();
+ changed_vt = ply_change_to_vt_with_fd (vt_number, fd);
+ ply_restore_errno ();
+ close (fd);
+
+ return changed_vt;
+}
+
/* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */
long ply_get_random_number (long lower_bound, long range);
+bool ply_change_to_vt_with_fd (int vt_number,
+ int tty_fd);
+bool ply_change_to_vt (int vt_number);
+
#endif
#endif /* PLY_UTILS_H */