diff options
author | V3n3RiX <venerix@koprulu.sector> | 2022-06-29 12:04:12 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2022-06-29 12:04:12 +0100 |
commit | 0f558761aa2dee1017b4751e4017205e015a9560 (patch) | |
tree | 037df795519468a25d9362b4e95cdaeb84eb1cf9 /x11-apps/xdm/files | |
parent | 752d6256e5204b958b0ef7905675a940b5e9172f (diff) |
gentoo resync : 29.12.2022
Diffstat (limited to 'x11-apps/xdm/files')
-rw-r--r-- | x11-apps/xdm/files/xdm-1.1.12-consolekit.patch | 269 |
1 files changed, 0 insertions, 269 deletions
diff --git a/x11-apps/xdm/files/xdm-1.1.12-consolekit.patch b/x11-apps/xdm/files/xdm-1.1.12-consolekit.patch deleted file mode 100644 index 232d10d94db8..000000000000 --- a/x11-apps/xdm/files/xdm-1.1.12-consolekit.patch +++ /dev/null @@ -1,269 +0,0 @@ -http://bugs.gentoo.org/360987 -http://projects.archlinux.org/svntogit/packages.git/plain/trunk/xdm-consolekit.patch?h=packages/xorg-xdm -http://lists.x.org/archives/xorg-devel/2011-February/019615.html -http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=615020 ---- - configure.ac | 20 ++++++++-- - include/dm.h | 3 ++ - man/xdm.man | 6 +++ - xdm/resource.c | 13 ++++++- - xdm/session.c | 102 +++++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 140 insertions(+), 4 deletions(-) - -diff --git a/configure.ac b/configure.ac -index d110809..db973f7 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -168,15 +168,15 @@ AS_IF([test "x$with_systemdsystemunitdir" != "xno"], [ - AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$with_systemdsystemunitdir" != "xno"]) - - # Check whether to enable systemd startup notification. --# This requires libsystemd-daemon. -+# This requires libsystemd. - AC_ARG_WITH([systemd-daemon], AS_HELP_STRING([--with-systemd-daemon], - [Add support for systemd startup notification (default is autodetected)]), - [USE_SYSTEMD_DAEMON=$withval], [USE_SYSTEMD_DAEMON=auto]) - AS_IF([test "x$USE_SYSTEMD_DAEMON" != "xno"], [ -- PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon], -+ PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd], - [AC_DEFINE(USE_SYSTEMD_DAEMON,1,[Use systemd startup notification])], - [AS_IF([test "x$USE_SYSTEMD_DAEMON" = "xyes"], -- [AC_MSG_ERROR([systemd startup notification support requested, but libsystemd-daemon not found.])] -+ [AC_MSG_ERROR([systemd startup notification support requested, but libsystemd not found.])] - )] - ) - ]) -@@ -395,6 +395,20 @@ PKG_CHECK_MODULES(DMCP, xdmcp) - PKG_CHECK_MODULES(XLIB, x11) - PKG_CHECK_MODULES(AUTH, xau) - -+# ConsoleKit support -+AC_ARG_WITH(consolekit, AC_HELP_STRING([--with-consolekit], [Use ConsoleKit]), -+ [USE_CONSOLEKIT=$withval], [USE_CONSOLEKIT=yes]) -+if test x"$USE_CONSOLEKIT" != xno; then -+ PKG_CHECK_MODULES(CK_CONNECTOR, ck-connector, -+ [USE_CONSOLEKIT=yes], [USE_CONSOLEKIT=no]) -+ if test x"$USE_CONSOLEKIT" = xyes; then -+ AC_DEFINE([USE_CONSOLEKIT], 1, [Define to 1 to use ConsoleKit]) -+ XDM_CFLAGS="$XDM_CFLAGS $CK_CONNECTOR_CFLAGS -DUSE_CONSOLEKIT" -+ XDM_LIBS="$XDM_LIBS $CK_CONNECTOR_LIBS" -+ fi -+fi -+dnl AM_CONDITIONAL(USE_CONSOLEKIT, test$USE_CONSOLEKIT = xyes) -+ - # - # Greeter - # -diff --git a/include/dm.h b/include/dm.h -index 9116d6f..27fdd71 100644 ---- a/include/dm.h -+++ b/include/dm.h -@@ -327,6 +327,9 @@ extern char *randomFile; - extern char *prngdSocket; - extern int prngdPort; - # endif -+#ifdef USE_CONSOLEKIT -+extern int use_consolekit; -+#endif - - extern char *greeterLib; - extern char *willing; -diff --git a/man/xdm.man b/man/xdm.man -index ef57d8c..de99d25 100644 ---- a/man/xdm.man -+++ b/man/xdm.man -@@ -48,6 +48,8 @@ xdm \- X Display Manager with support for XDMCP, host chooser - ] [ - .B \-session - .I session_program -+] [ -+.B \-noconsolekit - ] - .SH DESCRIPTION - .I Xdm -@@ -215,6 +217,10 @@ indicates the program to run as the session after the user has logged in. - .IP "\fB\-xrm\fP \fIresource_specification\fP" - Allows an arbitrary resource to be specified, as in most - X Toolkit applications. -+.IP "\fB\-noconsolekit\fP" -+Specifies ``false'' as the value for the \fBDisplayManager.consoleKit\fP -+resource. -+This suppresses the session management using ConsoleKit. - .SH RESOURCES - At many stages the actions of - .I xdm -diff --git a/xdm/resource.c b/xdm/resource.c -index 316ace4..725351e 100644 ---- a/xdm/resource.c -+++ b/xdm/resource.c -@@ -65,6 +65,9 @@ char *randomDevice; - char *prngdSocket; - int prngdPort; - #endif -+#ifdef USE_CONSOLEKIT -+int use_consolekit; -+#endif - - char *greeterLib; - char *willing; -@@ -192,6 +195,10 @@ struct dmResources { - "false"} , - { "willing", "Willing", DM_STRING, &willing, - ""} , -+#ifdef USE_CONSOLEKIT -+{ "consoleKit", "ConsoleKit", DM_BOOL, (char **) &use_consolekit, -+ "true"} , -+#endif - }; - - #define NUM_DM_RESOURCES (sizeof DmResources / sizeof DmResources[0]) -@@ -377,7 +384,11 @@ XrmOptionDescRec optionTable [] = { - {"-debug", "*debugLevel", XrmoptionSepArg, (caddr_t) NULL }, - {"-xrm", NULL, XrmoptionResArg, (caddr_t) NULL }, - {"-daemon", ".daemonMode", XrmoptionNoArg, "true" }, --{"-nodaemon", ".daemonMode", XrmoptionNoArg, "false" } -+{"-nodaemon", ".daemonMode", XrmoptionNoArg, "false" }, -+#ifdef USE_CONSOLEKIT -+{"-consolekit", ".consoleKit", XrmoptionNoArg, "true" }, -+{"-noconsolekit", ".consoleKit", XrmoptionNoArg, "false" } -+#endif - }; - - static int originalArgc; -diff --git a/xdm/session.c b/xdm/session.c -index 4fd7d0a..c16978d 100644 ---- a/xdm/session.c -+++ b/xdm/session.c -@@ -73,6 +73,11 @@ extern int key_setnet(struct key_netstarg *arg); - # endif - #endif /* USE_PAM */ - -+#ifdef USE_CONSOLEKIT -+#include <ck-connector.h> -+#include <dbus/dbus.h> -+#endif -+ - #ifdef USE_SELINUX - #include <selinux/selinux.h> - #include <selinux/get_context_list.h> -@@ -523,6 +528,97 @@ UnsecureDisplay (struct display *d, Display *dpy) - } - } - -+#ifdef USE_CONSOLEKIT -+ -+static CkConnector *connector; -+ -+static int openCKSession(struct verify_info *verify, struct display *d) -+{ -+ int ret; -+ DBusError error; -+ char *remote_host_name = ""; -+ dbus_bool_t is_local; -+ char *display_name = ""; -+ char *display_device = ""; -+ char devtmp[16]; -+ -+ if (!use_consolekit) -+ return 1; -+ -+ is_local = d->displayType.location == Local; -+ if (d->peerlen > 0 && d->peer) -+ remote_host_name = d->peer; -+ if (d->name) -+ display_name = d->name; -+ /* how can we get the corresponding tty at best...? */ -+ if (d->windowPath) { -+ display_device = strchr(d->windowPath, ':'); -+ if (display_device && display_device[1]) -+ display_device++; -+ else -+ display_device = d->windowPath; -+ snprintf(devtmp, sizeof(devtmp), "/dev/tty%s", display_device); -+ display_device = devtmp; -+ } -+ -+ connector = ck_connector_new(); -+ if (!connector) { -+ LogOutOfMem("ck_connector"); -+ return 0; -+ } -+ -+ dbus_error_init(&error); -+ ret = ck_connector_open_session_with_parameters( -+ connector, &error, -+ "unix-user", &verify->uid, -+ "x11-display", &display_name, -+ "x11-display-device", &display_device, -+ "remote-host-name", &remote_host_name, -+ "is-local", &is_local, -+ NULL); -+ if (!ret) { -+ if (dbus_error_is_set(&error)) { -+ LogError("Dbus error: %s\n", error.message); -+ dbus_error_free(&error); -+ } else { -+ LogError("ConsoleKit error\n"); -+ } -+ LogError("console-kit-daemon not running?\n"); -+ ck_connector_unref(connector); -+ connector = NULL; -+ return 0; -+ } -+ -+ verify->userEnviron = setEnv(verify->userEnviron, -+ "XDG_SESSION_COOKIE", ck_connector_get_cookie(connector)); -+ return 1; -+} -+ -+static void closeCKSession(void) -+{ -+ DBusError error; -+ -+ if (!connector) -+ return; -+ -+ dbus_error_init(&error); -+ if (!ck_connector_close_session(connector, &error)) { -+ if (dbus_error_is_set(&error)) { -+ LogError("Dbus error: %s\n", error.message); -+ dbus_error_free(&error); -+ } else { -+ LogError("ConsoleKit close error\n"); -+ } -+ LogError("console-kit-daemon not running?\n"); -+ } -+ ck_connector_unref(connector); -+ connector = NULL; -+} -+#else -+#define openCKSession(v,d) 1 -+#define closeCKSession() -+#endif -+ - void - SessionExit (struct display *d, int status, int removeAuth) - { -@@ -537,6 +633,8 @@ SessionExit (struct display *d, int status, int removeAuth) - } - #endif - -+ closeCKSession(); -+ - /* make sure the server gets reset after the session is over */ - if (d->serverPid >= 2 && d->resetSignal) - kill (d->serverPid, d->resetSignal); -@@ -614,6 +712,10 @@ StartClient ( - #ifdef USE_PAM - if (pamh) pam_open_session(pamh, 0); - #endif -+ -+ if (!openCKSession(verify, d)) -+ return 0; -+ - switch (pid = fork ()) { - case 0: - CleanUpChild (); --- -2.19.2 - |