diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2012-03-06 11:52:26 +1100 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2012-03-06 11:52:26 +1100 |
commit | 964619ba615cd6c57070ad59cdcca8f132d9dfb1 (patch) | |
tree | 6fe9bd4c34caf87601967d0269e1a3bdcb1df2c4 /src | |
parent | f98e0dc213df08daf574818fe6833bd3f5e73786 (diff) | |
download | lightdm-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.c | 28 |
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) { |