mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
mutter-launch: fix for more systemd API changes
Modern systemd changed the semantics of sd_session_get_tty() to return the full path, rather than just the tty name. Reviewed by Ray Strode in IRC.
This commit is contained in:
parent
c0e7f6d9bf
commit
24074a81d0
@ -566,7 +566,18 @@ setup_tty(struct weston_launch *wl)
|
|||||||
|
|
||||||
ok = sd_session_get_tty(session, &tty);
|
ok = sd_session_get_tty(session, &tty);
|
||||||
if (ok == 0) {
|
if (ok == 0) {
|
||||||
snprintf(path, PATH_MAX, "/dev/%s", tty);
|
/* Old systemd only has the tty name in the TTY
|
||||||
|
field, new one has the full char device path.
|
||||||
|
|
||||||
|
Check what we have and fix it properly.
|
||||||
|
*/
|
||||||
|
if (strncmp(tty, "/dev", strlen("/dev")) == 0) {
|
||||||
|
strncpy(path, tty, PATH_MAX);
|
||||||
|
path[PATH_MAX-1] = 0;
|
||||||
|
} else {
|
||||||
|
snprintf(path, PATH_MAX, "/dev/%s", tty);
|
||||||
|
}
|
||||||
|
|
||||||
wl->tty = open(path, O_RDWR | O_NOCTTY | O_CLOEXEC);
|
wl->tty = open(path, O_RDWR | O_NOCTTY | O_CLOEXEC);
|
||||||
free(tty);
|
free(tty);
|
||||||
#ifdef HAVE_SD_SESSION_GET_VT
|
#ifdef HAVE_SD_SESSION_GET_VT
|
||||||
|
Loading…
Reference in New Issue
Block a user