summaryrefslogtreecommitdiff
path: root/source/x/x11/patch/xdm/xdm-consolekit.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/x/x11/patch/xdm/xdm-consolekit.patch')
-rw-r--r--source/x/x11/patch/xdm/xdm-consolekit.patch230
1 files changed, 0 insertions, 230 deletions
diff --git a/source/x/x11/patch/xdm/xdm-consolekit.patch b/source/x/x11/patch/xdm/xdm-consolekit.patch
deleted file mode 100644
index fbacd36f..00000000
--- a/source/x/x11/patch/xdm/xdm-consolekit.patch
+++ /dev/null
@@ -1,230 +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
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -362,6 +362,20 @@
-
- AM_CONDITIONAL(DYNAMIC_GREETER, test x$DYNAMIC_GREETER = xyes)
-
-+# 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)
-+
- #
- # XDM
- #
---- a/xdm/session.c
-+++ b/xdm/session.c
-@@ -66,6 +66,11 @@
- #endif
- #endif /* USE_PAM */
-
-+#ifdef USE_CONSOLEKIT
-+#include <ck-connector.h>
-+#include <dbus/dbus.h>
-+#endif
-+
- #ifdef __SCO__
- #include <prot.h>
- #endif
-@@ -472,6 +477,97 @@
- }
- }
-
-+#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)
- {
-@@ -486,6 +580,8 @@
- }
- #endif
-
-+ closeCKSession();
-+
- /* make sure the server gets reset after the session is over */
- if (d->serverPid >= 2 && d->resetSignal)
- kill (d->serverPid, d->resetSignal);
-@@ -568,6 +664,10 @@
- #ifdef USE_PAM
- if (pamh) pam_open_session(pamh, 0);
- #endif
-+
-+ if (!openCKSession(verify, d))
-+ return 0;
-+
- switch (pid = fork ()) {
- case 0:
- CleanUpChild ();
---- a/include/dm.h
-+++ b/include/dm.h
-@@ -325,6 +325,9 @@
- extern char *prngdSocket;
- extern int prngdPort;
- # endif
-+#ifdef USE_CONSOLEKIT
-+extern int use_consolekit;
-+#endif
-
- extern char *greeterLib;
- extern char *willing;
---- a/xdm/resource.c
-+++ b/xdm/resource.c
-@@ -68,6 +68,9 @@
- char *prngdSocket;
- int prngdPort;
- #endif
-+#ifdef USE_CONSOLEKIT
-+int use_consolekit;
-+#endif
-
- char *greeterLib;
- char *willing;
-@@ -258,6 +261,10 @@
- "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])
-@@ -440,7 +447,11 @@
- {"-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;
---- a/man/xdm.man
-+++ b/man/xdm.man
-@@ -51,6 +51,8 @@
- ] [
- .B \-session
- .I session_program
-+] [
-+.B \-noconsolekit
- ]
- .SH DESCRIPTION
- .I Xdm
-@@ -218,6 +220,10 @@
- .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