summaryrefslogtreecommitdiff
path: root/src/session-child.c
diff options
context:
space:
mode:
authorGuido Berhoerster <gber@opensuse.org>2013-04-16 09:56:08 +0200
committerGuido Berhoerster <gber@opensuse.org>2013-04-16 09:56:08 +0200
commita844528606a5d2b3ea5620d4f7cddbc7b92a6948 (patch)
tree8da1075b074ac1eaf26430a88614d302301713aa /src/session-child.c
parenta52cd4dafce35278cb256370b90791b66f8f0e7f (diff)
downloadlightdm-a844528606a5d2b3ea5620d4f7cddbc7b92a6948.tar.gz
Make greeter and user sessions inherit the system locale
Diffstat (limited to 'src/session-child.c')
-rw-r--r--src/session-child.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/session-child.c b/src/session-child.c
index 23e7ea9e..c65b2e03 100644
--- a/src/session-child.c
+++ b/src/session-child.c
@@ -192,6 +192,19 @@ session_child_run (int argc, char **argv)
gchar *console_kit_cookie;
const gchar *path;
GError *error = NULL;
+ const gchar *locale_value;
+ gchar *locale_var;
+ static const gchar * const locale_var_names[] = {
+ "LC_COLLATE",
+ "LC_CTYPE",
+ "LC_MONETARY",
+ "LC_NUMERIC",
+ "LC_TIME",
+ "LC_MESSAGES",
+ "LC_ALL",
+ "LANG",
+ NULL
+ };
#if !defined(GLIB_VERSION_2_36)
g_type_init ();
@@ -334,6 +347,17 @@ session_child_run (int argc, char **argv)
pam_putenv (pam_handle, g_strdup_printf ("LOGNAME=%s", username));
pam_putenv (pam_handle, g_strdup_printf ("HOME=%s", user_get_home_directory (user)));
pam_putenv (pam_handle, g_strdup_printf ("SHELL=%s", user_get_shell (user)));
+
+ /* Let the greeter and user session inherit the system default locale */
+ for (i = 0; locale_var_names[i] != NULL; i++)
+ {
+ if ((locale_value = g_getenv (locale_var_names[i])) != NULL)
+ {
+ locale_var = g_strdup_printf ("%s=%s", locale_var_names[i], locale_value);
+ pam_putenv (pam_handle, locale_var);
+ g_free (locale_var);
+ }
+ }
}
}