summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2012-03-06 11:52:26 +1100
committerRobert Ancell <robert.ancell@canonical.com>2012-03-06 11:52:26 +1100
commit964619ba615cd6c57070ad59cdcca8f132d9dfb1 (patch)
tree6fe9bd4c34caf87601967d0269e1a3bdcb1df2c4 /src
parentf98e0dc213df08daf574818fe6833bd3f5e73786 (diff)
downloadlightdm-964619ba615cd6c57070ad59cdcca8f132d9dfb1.tar.gz
Fix session wrapper working the same as it did in 1.1.3
Diffstat (limited to 'src')
-rw-r--r--src/display.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/display.c b/src/display.c
index 40a0efcf..54f8c8a7 100644
--- a/src/display.c
+++ b/src/display.c
@@ -508,7 +508,7 @@ autologin_guest (Display *display, const gchar *service, gboolean start_greeter_
}
static gchar **
-get_session_command (const gchar *filename)
+get_session_command (const gchar *filename, const gchar *session_wrapper)
{
GKeyFile *session_desktop_file;
gboolean result;
@@ -533,6 +533,17 @@ get_session_command (const gchar *filename)
if (!command)
return NULL;
+ /* If configured, run sessions through a wrapper */
+ if (session_wrapper)
+ {
+ argv = g_malloc (sizeof (gchar *) * 3);
+ path = g_find_program_in_path (session_wrapper);
+ argv[0] = path ? path : g_strdup (session_wrapper);
+ argv[1] = command;
+ argv[2] = NULL;
+ return argv;
+ }
+
/* Split command into an array listing and make command absolute */
result = g_shell_parse_argv (command, &argc, &argv, &error);
if (error)
@@ -623,7 +634,7 @@ display_start_greeter (Display *display)
path = g_build_filename (sessions_dir, filename, NULL);
g_free (sessions_dir);
g_free (filename);
- argv = get_session_command (path);
+ argv = get_session_command (path, NULL);
g_free (path);
if (!argv)
return TRUE;
@@ -682,7 +693,7 @@ display_start_session (Display *display)
path = g_build_filename (sessions_dir, filename, NULL);
g_free (sessions_dir);
g_free (filename);
- argv = get_session_command (path);
+ argv = get_session_command (path, display->priv->session_wrapper);
g_free (path);
if (!argv)
return TRUE;
@@ -690,17 +701,6 @@ display_start_session (Display *display)
session_set_env (display->priv->session, "DESKTOP_SESSION", display->priv->user_session); // FIXME: Apparently deprecated?
session_set_env (display->priv->session, "GDMSESSION", display->priv->user_session); // FIXME: Not cross-desktop
- /* If configured, run sessions through a wrapper */
- if (display->priv->session_wrapper)
- {
- gchar *wrapper = g_find_program_in_path (display->priv->session_wrapper);
- if (wrapper)
- prepend_argv (&argv, wrapper);
- else
- g_warning ("Session wrapper %s not in the path", display->priv->session_wrapper);
- g_free (wrapper);
- }
-
/* Run a guest session through the wrapper covered by MAC */
if (display->priv->autologin_guest)
{