diff options
author | Guido Berhoerster <gber@opensuse.org> | 2013-04-16 09:56:08 +0200 |
---|---|---|
committer | Guido Berhoerster <gber@opensuse.org> | 2013-04-16 09:56:08 +0200 |
commit | a844528606a5d2b3ea5620d4f7cddbc7b92a6948 (patch) | |
tree | 8da1075b074ac1eaf26430a88614d302301713aa /src/session-child.c | |
parent | a52cd4dafce35278cb256370b90791b66f8f0e7f (diff) | |
download | lightdm-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.c | 24 |
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); + } + } } } |