FreeBSD Bugzilla – Attachment 250085 Details for
Bug 278457
x11/lightdm: Fix VT/user switching
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch-src_vt.c
patch-src_vt.c (text/plain), 2.65 KB, created by
Tijl Coosemans
on 2024-04-19 10:31:49 UTC
(
hide
)
Description:
patch-src_vt.c
Filename:
MIME Type:
Creator:
Tijl Coosemans
Created:
2024-04-19 10:31:49 UTC
Size:
2.65 KB
patch
obsolete
>--- 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; > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 278457
: 250085