summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/dbus-run-session.1.xml.in7
-rw-r--r--tools/Makefile.am4
-rw-r--r--tools/dbus-run-session.c30
3 files changed, 19 insertions, 22 deletions
diff --git a/doc/dbus-run-session.1.xml.in b/doc/dbus-run-session.1.xml.in
index 693c5e4e..5181a8b1 100644
--- a/doc/dbus-run-session.1.xml.in
+++ b/doc/dbus-run-session.1.xml.in
@@ -130,6 +130,13 @@ contain a
<emphasis remap='I'>PROGRAM</emphasis>
in the environment variable
<emphasis remap='B'>DBUS_SESSION_BUS_ADDRESS</emphasis>.</para>
+
+<para>The variables
+ <emphasis remap='B'>DBUS_SESSION_BUS_PID</emphasis>,
+ <emphasis remap='B'>DBUS_SESSION_BUS_WINDOWID</emphasis>,
+ <emphasis remap='B'>DBUS_STARTER_BUS_TYPE</emphasis> and
+ <emphasis remap='B'>DBUS_STARTER_ADDRESS</emphasis>
+ are removed from the environment, if present.</para>
</refsect1>
<refsect1 id='bugs'><title>BUGS</title>
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 464a8050..73d95fcf 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -47,6 +47,10 @@ dbus_launch_SOURCES= \
dbus_run_session_SOURCES = \
dbus-run-session.c
+
+dbus_run_session_LDADD = \
+ $(top_builddir)/dbus/libdbus-1.la \
+ $(NULL)
endif
dbus_cleanup_sockets_SOURCES= \
diff --git a/tools/dbus-run-session.c b/tools/dbus-run-session.c
index 4f7243f7..105ab3b4 100644
--- a/tools/dbus-run-session.c
+++ b/tools/dbus-run-session.c
@@ -36,6 +36,8 @@
#include <sys/wait.h>
#include <signal.h>
+#include "dbus/dbus.h"
+
#define MAX_ADDR_LEN 512
#define PIPE_READ_END 0
#define PIPE_WRITE_END 1
@@ -100,22 +102,6 @@ oom (void)
exit (1);
}
-static void *
-xmalloc (size_t bytes)
-{
- void *ret;
-
- if (bytes == 0)
- bytes = 1;
-
- ret = malloc (bytes);
-
- if (ret == NULL)
- oom ();
-
- return ret;
-}
-
typedef enum
{
READ_STATUS_OK, /**< Read succeeded */
@@ -228,7 +214,6 @@ main (int argc, char **argv)
int requires_arg = 0;
pid_t bus_pid;
pid_t app_pid;
- char *envvar;
while (i < argc)
{
@@ -397,11 +382,12 @@ main (int argc, char **argv)
close (bus_address_pipe[PIPE_READ_END]);
- envvar = xmalloc (strlen ("DBUS_SESSION_BUS_ADDRESS=") +
- strlen (bus_address) + 1);
- strcpy (envvar, "DBUS_SESSION_BUS_ADDRESS=");
- strcat (envvar, bus_address);
- putenv (envvar);
+ if (!dbus_setenv ("DBUS_SESSION_BUS_ADDRESS", bus_address) ||
+ !dbus_setenv ("DBUS_SESSION_BUS_PID", NULL) ||
+ !dbus_setenv ("DBUS_SESSION_BUS_WINDOWID", NULL) ||
+ !dbus_setenv ("DBUS_STARTER_ADDRESS", NULL) ||
+ !dbus_setenv ("DBUS_STARTER_BUS_TYPE", NULL))
+ oom ();
app_pid = fork ();