summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2013-12-16 11:24:24 -0500
committerRay Strode <rstrode@redhat.com>2013-12-16 11:58:10 -0500
commitc672e4e49983d285e829c1ec846d22fbf19bf29a (patch)
tree99890cf59f30adf3057a0a3bd3e9d0b98a2c993e
parent0b2d22f63b3e6b3185d4e9a93bb192a21a695f9e (diff)
downloadgdm-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.c37
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",