<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>
dbus_run_session_SOURCES = \
dbus-run-session.c
+
+dbus_run_session_LDADD = \
+ $(top_builddir)/dbus/libdbus-1.la \
+ $(NULL)
endif
dbus_cleanup_sockets_SOURCES= \
#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
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 */
int requires_arg = 0;
pid_t bus_pid;
pid_t app_pid;
- char *envvar;
while (i < argc)
{
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 ();