diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2011-09-21 16:34:46 +1000 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2011-09-21 16:34:46 +1000 |
commit | 4f8c10c307ece13b003e2bb21d59f59ad2938a19 (patch) | |
tree | 22797de15f9afe267b4f8f5a6e7770ae9631b7d4 /src/session.c | |
parent | 9f4c03d50831aee9cc30f910edff1376ad93c2a2 (diff) | |
download | lightdm-4f8c10c307ece13b003e2bb21d59f59ad2938a19.tar.gz |
Refactor the session/process relationship so we can have sessions running remotely
Diffstat (limited to 'src/session.c')
-rw-r--r-- | src/session.c | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/src/session.c b/src/session.c index e20a197c..f7d157a2 100644 --- a/src/session.c +++ b/src/session.c @@ -133,7 +133,7 @@ set_env_from_authentication (Session *session, PAMSession *authentication) { gchar **pam_env_vars = g_strsplit (pam_env[i], "=", 2); if (pam_env_vars && pam_env_vars[0] && pam_env_vars[1]) - process_set_env (PROCESS (session), pam_env_vars[0], pam_env_vars[1]); + session_set_env (session, pam_env_vars[0], pam_env_vars[1]); else g_warning ("Can't parse PAM environment variable %s", pam_env[i]); g_strfreev (pam_env_vars); @@ -143,6 +143,22 @@ set_env_from_authentication (Session *session, PAMSession *authentication) } void +session_set_env (Session *session, const gchar *name, const gchar *value) +{ + g_return_if_fail (session != NULL); + g_return_if_fail (name != NULL); + process_set_env (PROCESS (session), name, value); +} + +const gchar * +session_get_env (Session *session, const gchar *name) +{ + g_return_val_if_fail (session != NULL, NULL); + g_return_val_if_fail (name != NULL, NULL); + return process_get_env (PROCESS (session), name); +} + +void session_set_console_kit_parameter (Session *session, const gchar *name, GVariant *value) { g_return_if_fail (session != NULL); @@ -202,7 +218,7 @@ set_language (Session *session) { g_debug ("Using locale %s for language %s", code, language); found_code = TRUE; - process_set_env (PROCESS (session), "LANG", code); + session_set_env (session, "LANG", code); break; } } @@ -228,11 +244,11 @@ session_start (Session *session) g_debug ("Launching session"); user = pam_session_get_user (session->priv->authentication); - process_set_env (PROCESS (session), "PATH", "/usr/local/bin:/usr/bin:/bin"); - process_set_env (PROCESS (session), "USER", user_get_name (user)); - process_set_env (PROCESS (session), "USERNAME", user_get_name (user)); // FIXME: Is this required? - process_set_env (PROCESS (session), "HOME", user_get_home_directory (user)); - process_set_env (PROCESS (session), "SHELL", user_get_shell (user)); + session_set_env (session, "PATH", "/usr/local/bin:/usr/bin:/bin"); + session_set_env (session, "USER", user_get_name (user)); + session_set_env (session, "USERNAME", user_get_name (user)); // FIXME: Is this required? + session_set_env (session, "HOME", user_get_home_directory (user)); + session_set_env (session, "SHELL", user_get_shell (user)); set_env_from_authentication (session, session->priv->authentication); set_language (session); @@ -261,11 +277,11 @@ session_real_start (Session *session) * Must be done after set_env_from_authentication because that often sets PATH. * This can be removed when this is no longer required. */ - orig_path = process_get_env (PROCESS (session), "PATH"); + orig_path = session_get_env (session, "PATH"); if (orig_path) { gchar *path = g_strdup_printf ("%s:%s", PKGLIBEXEC_DIR, orig_path); - process_set_env (PROCESS (session), "PATH", path); + session_set_env (session, "PATH", path); g_free (path); } @@ -300,7 +316,7 @@ session_real_start (Session *session) } if (session->priv->console_kit_cookie) - process_set_env (PROCESS (session), "XDG_SESSION_COOKIE", session->priv->console_kit_cookie); + session_set_env (session, "XDG_SESSION_COOKIE", session->priv->console_kit_cookie); user = pam_session_get_user (session->priv->authentication); process_set_user (PROCESS (session), user); |