From 0f4d8b79fb36320ed692decbd9a3eb22aeea32dc Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Sep 10 2014 14:21:28 +0000 Subject: daemon: canonicalize codeset in locale for default language If we pull the default langauge from the system, it may not have a fullly caonicalized codeset, which can cause interoperability issues with OSX. This commit does the dance to make sure it's canonicalized. --- diff --git a/daemon/Makefile.am b/daemon/Makefile.am index 674a7c4..7f11745 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -4,6 +4,7 @@ AM_CPPFLAGS = \ -I. \ -I.. \ -I$(top_srcdir)/common \ + -I$(top_srcdir)/gui/simple-greeter \ -DAUTHDIR=\"$(authdir)\" \ -DBINDIR=\"$(bindir)\" \ -DDATADIR=\"$(datadir)\" \ @@ -13,6 +14,7 @@ AM_CPPFLAGS = \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DLOGDIR=\"$(logdir)\" \ -DSBINDIR=\"$(sbindir)\" \ + -DLIBLOCALEDIR=\""$(prefix)/lib/locale"\" \ -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ -DGDM_SPOOL_DIR=\"$(GDM_SPOOL_DIR)\" \ -DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\" \ @@ -85,6 +87,8 @@ test_session_SOURCES = \ gdm-session.c \ gdm-session.h \ gdm-session-private.h \ + $(top_srcdir)/gui/simple-greeter/gdm-languages.h \ + $(top_srcdir)/gui/simple-greeter/gdm-languages.c \ gdm-session-direct.c \ gdm-session-direct.h \ gdm-session-record.c \ @@ -129,6 +133,8 @@ gdm_simple_slave_SOURCES = \ gdm-session.c \ gdm-session.h \ gdm-session-private.h \ + $(top_srcdir)/gui/simple-greeter/gdm-languages.h \ + $(top_srcdir)/gui/simple-greeter/gdm-languages.c \ gdm-session-direct.c \ gdm-session-direct.h \ gdm-session-record.c \ @@ -197,6 +203,8 @@ gdm_product_slave_SOURCES = \ gdm-session.c \ gdm-session.h \ gdm-session-private.h \ + $(top_srcdir)/gui/simple-greeter/gdm-languages.h \ + $(top_srcdir)/gui/simple-greeter/gdm-languages.c \ gdm-session-direct.c \ gdm-session-direct.h \ gdm-session-record.c \ diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c index d1fec90..7fb42a7 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c @@ -55,6 +55,8 @@ #include "gdm-session-private.h" #include "gdm-session-direct-glue.h" +#include "gdm-languages.h" + #include "gdm-session-record.h" #include "gdm-session-worker-job.h" @@ -594,11 +596,19 @@ get_session_command_for_name (const char *name, static const char * get_default_language_name (GdmSessionDirect *session) { + const char *locale; + static char *system_language = NULL; + if (session->priv->saved_language != NULL) { return session->priv->saved_language; } - return setlocale (LC_MESSAGES, NULL); + if (system_language == NULL) { + locale = setlocale (LC_MESSAGES, NULL); + system_language = gdm_normalize_language_name (locale); + } + + return system_language; } static char *