diff options
-rw-r--r-- | x11/gdm/Makefile | 3 | ||||
-rw-r--r-- | x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c | 70 |
2 files changed, 66 insertions, 7 deletions
diff --git a/x11/gdm/Makefile b/x11/gdm/Makefile index 854a467a8..af15b686a 100644 --- a/x11/gdm/Makefile +++ b/x11/gdm/Makefile @@ -3,11 +3,12 @@ # Whom: Joe Marcus Clarke <marcus@FreeBSD.org> # # $FreeBSD$ -# $MCom: ports/x11/gdm/Makefile,v 1.109 2008/02/16 00:47:58 marcus Exp $ +# $MCom: ports/x11/gdm/Makefile,v 1.110 2008/02/26 03:36:26 marcus Exp $ # PORTNAME= gdm PORTVERSION= 2.21.8 +PORTREVISION= 1 CATEGORIES= x11 gnome MASTER_SITES= ${MASTER_SITE_GNOME} MASTER_SITE_SUBDIR= sources/${PORTNAME:S/2$//}/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/} diff --git a/x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c b/x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c index dcb0d2c55..1593e914c 100644 --- a/x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c +++ b/x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c @@ -1,6 +1,6 @@ ---- gui/simple-greeter/gdm-languages.c.orig 2008-02-13 02:03:34.000000000 -0500 -+++ gui/simple-greeter/gdm-languages.c 2008-02-13 02:05:00.000000000 -0500 -@@ -347,7 +347,7 @@ select_dirs (const struct dirent *dirent +--- gui/simple-greeter/gdm-languages.c.orig 2008-02-25 17:21:43.000000000 -0500 ++++ gui/simple-greeter/gdm-languages.c 2008-02-26 14:04:12.000000000 -0500 +@@ -479,7 +479,7 @@ select_dirs (const struct dirent *dirent struct stat st; char *path; @@ -9,7 +9,7 @@ if (g_stat (path, &st) == 0) { mode = st.st_mode; } -@@ -367,7 +367,7 @@ collect_locales_from_directory (void) +@@ -499,7 +499,7 @@ collect_locales_from_directory (void) int ndirents; int cnt; @@ -17,8 +17,8 @@ + ndirents = scandir ("/usr/share/locale", &dirents, select_dirs, alphasort); for (cnt = 0; cnt < ndirents; ++cnt) { - char *path; -@@ -389,7 +389,7 @@ collect_locales_from_directory (void) + char *path; +@@ -533,7 +533,7 @@ collect_locales_from_directory (void) } /* try to get additional information from LC_IDENTIFICATION */ @@ -27,3 +27,61 @@ res = g_file_test (path, G_FILE_TEST_IS_REGULAR); if (res) { GMappedFile *mapped; +@@ -568,6 +568,36 @@ collect_locales_from_aliases (void) + } + + static void ++collect_default_locale (void) ++{ ++ GdmLocale *locale; ++ GdmLocale *old_locale; ++ const char *locale_name = "C"; ++ ++ locale = g_new0 (GdmLocale, 1); ++ gdm_parse_language_name (locale_name, ++ &locale->language_code, ++ &locale->territory_code, ++ &locale->codeset, ++ &locale->modifier); ++ ++ locale->id = construct_language_name (locale->language_code, locale->territory_code, ++ NULL, locale->modifier); ++ locale->name = construct_language_name (locale->language_code, locale->territory_code, ++ locale->codeset, locale->modifier); ++ ++ old_locale = g_hash_table_lookup (gdm_available_locales_map, locale->id); ++ if (old_locale != NULL) { ++ if (strlen (old_locale->name) > strlen (locale->name)) { ++ chooser_locale_free (locale); ++ return; ++ } ++ } ++ ++ g_hash_table_insert (gdm_available_locales_map, g_strdup (locale->id), locale); ++} ++ ++static void + collect_locales (void) + { + +@@ -575,6 +605,7 @@ collect_locales (void) + gdm_available_locales_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) chooser_locale_free); + } + ++ collect_default_locale (); + collect_locales_from_archive (); + collect_locales_from_directory (); + collect_locales_from_aliases (); +@@ -956,7 +987,11 @@ gdm_get_language_from_name (const char * + goto out; + } + +- language = get_translated_language (language_code, name); ++ if (! strcmp (language_code, "C")) { ++ language = "C"; ++ } else { ++ language = get_translated_language (language_code, name); ++ } + + if (territory_code != NULL) { + territory = get_translated_territory (territory_code, name); |