git: 96b6500ac4d9 - main - x11/lightdm: Fix VT/user switching
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 21 Apr 2024 13:28:11 UTC
The branch main has been updated by madpilot:
URL: https://cgit.FreeBSD.org/ports/commit/?id=96b6500ac4d9de0d37c54823d4d0764890718f74
commit 96b6500ac4d9de0d37c54823d4d0764890718f74
Author: Tijl Coosemans <tijl@FreeBSD.org>
AuthorDate: 2024-04-21 13:27:18 +0000
Commit: Guido Falsi <madpilot@FreeBSD.org>
CommitDate: 2024-04-21 13:27:18 +0000
x11/lightdm: Fix VT/user switching
Submitted upstream: https://github.com/canonical/lightdm/pull/353
PR: 278457
---
x11/lightdm/Makefile | 2 +-
x11/lightdm/files/patch-src_vt.c | 99 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 100 insertions(+), 1 deletion(-)
diff --git a/x11/lightdm/Makefile b/x11/lightdm/Makefile
index 3be758e97f2e..737751f9d759 100644
--- a/x11/lightdm/Makefile
+++ b/x11/lightdm/Makefile
@@ -1,6 +1,6 @@
PORTNAME= lightdm
PORTVERSION= 1.32.0
-PORTREVISION= 5
+PORTREVISION= 6
CATEGORIES= x11
MASTER_SITES= https://github.com/canonical/${PORTNAME}/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/
diff --git a/x11/lightdm/files/patch-src_vt.c b/x11/lightdm/files/patch-src_vt.c
new file mode 100644
index 000000000000..a41bfc74fd41
--- /dev/null
+++ b/x11/lightdm/files/patch-src_vt.c
@@ -0,0 +1,99 @@
+--- src/vt.c.orig 2019-08-04 22:29:55 UTC
++++ src/vt.c
+@@ -16,6 +16,9 @@
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <sys/ioctl.h>
++#ifdef __FreeBSD__
++#include <sys/consio.h>
++#endif
+ #ifdef __linux__
+ #include <linux/vt.h>
+ #endif
+@@ -23,31 +26,56 @@
+ #include "vt.h"
+ #include "configuration.h"
+
++#if defined(__FreeBSD__)
++#define CONSOLE "/dev/console"
++#else
++#define CONSOLE "/dev/tty0"
++#endif
++
+ static GList *used_vts = NULL;
+
+ static gint
+ open_tty (void)
+ {
+- int fd = g_open ("/dev/tty0", O_RDONLY | O_NOCTTY, 0);
++ int fd = g_open (CONSOLE, O_RDONLY | O_NOCTTY, 0);
+ if (fd < 0)
+- g_warning ("Error opening /dev/tty0: %s", strerror (errno));
++ g_warning ("Error opening " CONSOLE ": %s", strerror (errno));
+ return fd;
+ }
+
+ gboolean
+ vt_can_multi_seat (void)
+ {
++#if defined(__linux__)
+ /* Quick check to see if we can multi seat. This is intentionally the
+ same check logind does, just without actually reading from the files.
+ Existence will prove whether we have CONFIG_VT built into the kernel. */
+ return access ("/dev/tty0", F_OK) == 0 &&
+ access ("/sys/class/tty/tty0/active", F_OK) == 0;
++#else
++ return FALSE;
++#endif
+ }
+
+ gint
+ vt_get_active (void)
+ {
+-#ifdef __linux__
++#if defined(__FreeBSD__)
++ int active, res;
++ int tty_fd = open_tty ();
++
++ if (tty_fd >= 0)
++ {
++ res = ioctl (tty_fd, VT_GETACTIVE, &active);
++ close (tty_fd);
++ if (res == 0)
++ return active;
++
++ g_warning ("Error using VT_GETACTIVE on " CONSOLE ": %s", strerror (errno));
++ }
++
++ return -1;
++#elif defined(__linux__)
+ /* Pretend always active */
+ if (getuid () != 0)
+ return 1;
+@@ -73,7 +101,7 @@ vt_set_active (gint number)
+ void
+ vt_set_active (gint number)
+ {
+-#ifdef __linux__
++#if defined(__FreeBSD__) || defined(__linux__)
+ g_debug ("Activating VT %d", number);
+
+ /* Pretend always active */
+@@ -86,7 +114,7 @@ vt_set_active (gint number)
+ int n = number;
+ if (ioctl (tty_fd, VT_ACTIVATE, n) < 0)
+ {
+- g_warning ("Error using VT_ACTIVATE %d on /dev/tty0: %s", n, strerror (errno));
++ g_warning ("Error using VT_ACTIVATE %d on " CONSOLE ": %s", n, strerror (errno));
+ close (tty_fd);
+ return;
+ }
+@@ -101,7 +129,7 @@ vt_set_active (gint number)
+ {
+ if (errno == EINTR)
+ continue;
+- g_warning ("Error using VT_WAITACTIVE %d on /dev/tty0: %s", n, strerror (errno));
++ g_warning ("Error using VT_WAITACTIVE %d on " CONSOLE ": %s", n, strerror (errno));
+ }
+ break;
+ }