uterm: vt: set K_RAW before trying K_OFF

K_OFF is not available on older kernels and it is currently discussed
whether it should be replaced on newer kernels. Therefore, set K_RAW
before trying K_OFF and then ignore errors if K_OFF cannot be set.

Reported-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
David Herrmann 2012-12-02 10:18:15 +01:00
parent fddd1f6fb4
commit 9bfd8c4f86

View File

@ -370,13 +370,17 @@ static int real_open(struct uterm_vt *vt, const char *vt_name)
vt->real_kbmode = K_UNICODE;
}
ret = ioctl(vt->real_fd, KDSKBMODE, K_OFF);
ret = ioctl(vt->real_fd, KDSKBMODE, K_RAW);
if (ret) {
log_error("cannot set VT KBMODE to K_OFF (%d): %m", errno);
log_error("cannot set VT KBMODE to K_RAW (%d): %m", errno);
ret = -EFAULT;
goto err_setmode;
}
ret = ioctl(vt->real_fd, KDSKBMODE, K_OFF);
if (ret)
log_warning("cannot set VT KBMODE to K_OFF (%d): %m", errno);
if (vts.v_active == vt->real_num) {
ret = ev_eloop_register_idle_cb(vt->vtm->eloop, real_delayed,
vt);