rpms/xorg-x11-xinit/F-11 ck-xinit-session.c, 1.1, 1.2 xorg-x11-xinit.spec, 1.65, 1.66

Nalin Dahyabhai nalin at fedoraproject.org
Fri May 22 20:13:40 UTC 2009


Author: nalin

Update of /cvs/pkgs/rpms/xorg-x11-xinit/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv32674

Modified Files:
	ck-xinit-session.c xorg-x11-xinit.spec 
Log Message:
- have ck-xinit-session tell the session bus to set XDG_SESSION_COOKIE
  for services which it autostarts (#502258)



Index: ck-xinit-session.c
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-xinit/F-11/ck-xinit-session.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- ck-xinit-session.c	12 Oct 2007 18:27:29 -0000	1.1
+++ ck-xinit-session.c	22 May 2009 20:13:09 -0000	1.2
@@ -1,5 +1,5 @@
 /*
- * Copyright Red Hat, Inc. 2007.
+ * Copyright Red Hat, Inc. 2007,2009.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,16 +40,72 @@
 #include <sys/wait.h>
 #include <paths.h>
 #include <stdlib.h>
+#include <string.h>
 #include <syslog.h>
 #include <unistd.h>
 #include <ck-connector.h>
+#include <dbus/dbus.h>
+
+static void
+setbusenv(const char *var, const char *val)
+{
+	DBusConnection *conn;
+	DBusMessage *req, *rep;
+	DBusMessageIter iter, sub, subsub;
+	DBusError error;
+
+	dbus_error_init (&error);
+
+	conn = dbus_bus_get(DBUS_BUS_SESSION, &error);
+	if (conn == NULL) {
+		return;
+	}
+
+	req = dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL);
+	if (req == NULL) {
+		return;
+	}
+
+	memset(&iter, 0, sizeof(iter));
+	memset(&sub, 0, sizeof(sub));
+	memset(&subsub, 0, sizeof(subsub));
+	dbus_message_iter_init_append(req, &iter);
+	if (!dbus_message_set_destination(req, DBUS_SERVICE_DBUS) ||
+	    !dbus_message_set_path(req, DBUS_PATH_DBUS) ||
+	    !dbus_message_set_interface(req, DBUS_INTERFACE_DBUS) ||
+	    !dbus_message_set_member(req, "UpdateActivationEnvironment") ||
+	    !dbus_message_iter_open_container(&iter,
+					      DBUS_TYPE_ARRAY,
+					      DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
+					      DBUS_TYPE_STRING_AS_STRING
+					      DBUS_TYPE_STRING_AS_STRING
+					      DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
+					      &sub) ||
+	    !dbus_message_iter_open_container(&sub,
+					      DBUS_TYPE_DICT_ENTRY,
+					      NULL,
+					      &subsub) ||
+	    !dbus_message_iter_append_basic(&subsub, DBUS_TYPE_STRING, &var) ||
+	    !dbus_message_iter_append_basic(&subsub, DBUS_TYPE_STRING, &val) ||
+	    !dbus_message_iter_close_container(&sub, &subsub) ||
+	    !dbus_message_iter_close_container(&iter, &sub)) {
+		dbus_message_unref(req);
+		return;
+	}
+	rep = dbus_connection_send_with_reply_and_block(conn, req,
+							30000, &error);
+	dbus_message_unref(req);
+	if (rep) {
+		dbus_message_unref(rep);
+	}
+}
 
 int
 main(int argc, char **argv)
 {
 	CkConnector *ckc = NULL;
 	DBusError error;
-	const char *shell;
+	const char *shell, *cookie;
 	pid_t pid;
 	int status;
 
@@ -63,8 +119,9 @@ main(int argc, char **argv)
 				syslog(LOG_ERR, "error forking child");
 				break;
 			case 0:
-				setenv("XDG_SESSION_COOKIE",
-				       ck_connector_get_cookie(ckc), 1);
+				cookie = ck_connector_get_cookie(ckc);
+				setenv("XDG_SESSION_COOKIE", cookie, 1);
+				setbusenv("XDG_SESSION_COOKIE", cookie);
 				break;
 			default:
 				waitpid(pid, &status, 0);


Index: xorg-x11-xinit.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-xinit/F-11/xorg-x11-xinit.spec,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -p -r1.65 -r1.66
--- xorg-x11-xinit.spec	8 May 2009 17:49:55 -0000	1.65
+++ xorg-x11-xinit.spec	22 May 2009 20:13:09 -0000	1.66
@@ -3,7 +3,7 @@
 Summary:   X.Org X11 X Window System xinit startup scripts
 Name:      xorg-x11-%{pkgname}
 Version:   1.0.9
-Release:   7%{?dist}
+Release:   8%{?dist}
 License:   MIT
 Group:     User Interface/X
 URL:       http://www.x.org
@@ -75,9 +75,9 @@ autoreconf
 # Makefile.am and submit it in a bug report or check into CVS.
 make XINITDIR=/etc/X11/xinit
 %{__cc} -o ck-xinit-session \
-	`pkg-config --cflags ck-connector` $RPM_OPT_FLAGS \
+	`pkg-config --cflags ck-connector dbus-1` $RPM_OPT_FLAGS \
 	$RPM_SOURCE_DIR/ck-xinit-session.c \
-	`pkg-config --libs ck-connector`
+	`pkg-config --libs ck-connector dbus-1`
 
 %install
 rm -rf $RPM_BUILD_ROOT
@@ -131,6 +131,10 @@ rm -rf $RPM_BUILD_ROOT
 %{_datadir}/xsessions/xinit-compat.desktop
 
 %changelog
+* Fri May 22 2009 Nalin Dahyabhai <nalin at redhat.com> 1.0.9-8
+- have ck-xinit-session tell the session bus to set XDG_SESSION_COOKIE
+  for services which it autostarts (#502258)
+
 * Fri May 08 2009 Adam Jackson <ajax at redhat.com> 1.0.9-7
 - xinit-1.0.9-unset.patch: Also unset XDG_SESSION_COOKIE in startx. (#489999)
 




More information about the scm-commits mailing list