mirror of
https://github.com/systemd/systemd.git
synced 2024-11-01 09:21:26 +03:00
terminal-util: introduce vt_release() helper
This commit is contained in:
parent
ad96887a12
commit
27dafac92b
@ -1305,3 +1305,19 @@ int vt_restore(int fd) {
|
||||
|
||||
return q;
|
||||
}
|
||||
|
||||
int vt_release(int fd, bool restore) {
|
||||
assert(fd >= 0);
|
||||
|
||||
/* This function releases the VT by acknowledging the VT-switch signal
|
||||
* sent by the kernel and optionally reset the VT in text and auto
|
||||
* VT-switching modes. */
|
||||
|
||||
if (ioctl(fd, VT_RELDISP, 1) < 0)
|
||||
return -errno;
|
||||
|
||||
if (restore)
|
||||
return vt_restore(fd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -155,3 +155,4 @@ int open_terminal_in_namespace(pid_t pid, const char *name, int mode);
|
||||
int vt_default_utf8(void);
|
||||
int vt_reset_keyboard(int fd);
|
||||
int vt_restore(int fd);
|
||||
int vt_release(int fd, bool restore_vt);
|
||||
|
@ -1296,9 +1296,9 @@ void session_leave_vt(Session *s) {
|
||||
return;
|
||||
|
||||
session_device_pause_all(s);
|
||||
r = ioctl(s->vtfd, VT_RELDISP, 1);
|
||||
r = vt_release(s->vtfd, false);
|
||||
if (r < 0)
|
||||
log_debug_errno(errno, "Cannot release VT of session %s: %m", s->id);
|
||||
log_debug_errno(r, "Cannot release VT of session %s: %m", s->id);
|
||||
}
|
||||
|
||||
bool session_is_controller(Session *s, const char *sender) {
|
||||
|
Loading…
Reference in New Issue
Block a user