diff options
author | Ray Strode <rstrode@redhat.com> | 2013-12-16 11:24:24 -0500 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2013-12-16 11:58:10 -0500 |
commit | c672e4e49983d285e829c1ec846d22fbf19bf29a (patch) | |
tree | 99890cf59f30adf3057a0a3bd3e9d0b98a2c993e | |
parent | 0b2d22f63b3e6b3185d4e9a93bb192a21a695f9e (diff) | |
download | gdm-c672e4e49983d285e829c1ec846d22fbf19bf29a.tar.gz |
session: pass all language vars through to worker
Right now we set LANG based on the value of setlocale(),
and disregard all other language environment variables.
This commit just passes the environment variables through
wholesale.
http://bugzilla.gnome.org/show_bug.cgi?id=709105
-rw-r--r-- | daemon/gdm-session.c | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c index e8e8f29c..e27b7e0f 100644 --- a/daemon/gdm-session.c +++ b/daemon/gdm-session.c @@ -2240,10 +2240,32 @@ gdm_session_set_environment_variable (GdmSession *self, } static void +set_up_session_language (GdmSession *self) +{ + char **environment; + int i; + const char *value; + + environment = g_listenv (); + for (i = 0; environment[i] != NULL; i++) { + if (strcmp (environment[i], "LANG") != 0 && + strcmp (environment[i], "LANGUAGE") != 0 && + !g_str_has_prefix (environment[i], "LC_")) { + continue; + } + + value = g_getenv (environment[i]); + + gdm_session_set_environment_variable (self, + environment[i], + value); + } + g_strfreev (environment); +} + +static void setup_session_environment (GdmSession *self) { - const char *locale; - gdm_session_set_environment_variable (self, "GDMSESSION", get_session_name (self)); @@ -2251,16 +2273,7 @@ setup_session_environment (GdmSession *self) "DESKTOP_SESSION", get_session_name (self)); - locale = get_default_language_name (self); - - if (locale != NULL && locale[0] != '\0') { - gdm_session_set_environment_variable (self, - "LANG", - locale); - gdm_session_set_environment_variable (self, - "GDM_LANG", - locale); - } + set_up_session_language (self); gdm_session_set_environment_variable (self, "DISPLAY", |