gdm r6066 - in trunk: . gui/simple-greeter
- From: halfline svn gnome org
- To: svn-commits-list gnome org
- Subject: gdm r6066 - in trunk: . gui/simple-greeter
- Date: Wed, 26 Mar 2008 04:30:39 +0000 (GMT)
Author: halfline
Date: Wed Mar 26 04:30:39 2008
New Revision: 6066
URL: http://svn.gnome.org/viewvc/gdm?rev=6066&view=rev
Log:
2008-03-25 Ray Strode <rstrode redhat com>
* gui/simple-greeter/gdm-languages.c
(add_locale), (collect_locales_from_archive),
(collect_locales_from_directory):
refactor common inner loop code between
collect_locales_from_* to new add_locale function
Modified:
trunk/ChangeLog
trunk/gui/simple-greeter/gdm-languages.c
Modified: trunk/gui/simple-greeter/gdm-languages.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-languages.c (original)
+++ trunk/gui/simple-greeter/gdm-languages.c Wed Mar 26 04:30:39 2008
@@ -286,6 +286,56 @@
return is_utf8;
}
+static gboolean
+add_locale (const char *language_name)
+{
+ GdmLocale *locale;
+ GdmLocale *old_locale;
+ char *name;
+
+ if (language_name_is_utf8 (language_name)) {
+ name = g_strdup (language_name);
+ } else {
+ name = g_strdup_printf ("%s.utf8", language_name);
+
+ if (!language_name_is_utf8 (name)) {
+ g_free (name);
+ return FALSE;
+ }
+ }
+
+ if (!language_name_is_valid (name)) {
+ g_free (name);
+ return FALSE;
+ }
+
+ locale = g_new0 (GdmLocale, 1);
+ gdm_parse_language_name (name,
+ &locale->language_code,
+ &locale->territory_code,
+ &locale->codeset,
+ &locale->modifier);
+ g_free (name);
+ name = NULL;
+
+ 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 FALSE;
+ }
+ }
+
+ g_hash_table_insert (gdm_available_locales_map, g_strdup (locale->id), locale);
+
+ return TRUE;
+}
+
#ifdef GDM_GET_LOCALES_FROM_LIBC
struct nameent
{
@@ -339,40 +389,7 @@
}
for (cnt = 0; cnt < used; ++cnt) {
- struct locrecent *locrec;
- GdmLocale *locale;
- GdmLocale *old_locale;
-
- if (!language_name_is_valid (names[cnt].name) ||
- !language_name_is_utf8 (names[cnt].name)) {
- continue;
- }
-
- locale = g_new0 (GdmLocale, 1);
-
- gdm_parse_language_name (names[cnt].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);
- continue;
- }
- }
-
-
- locrec = (struct locrecent *) (addr + names[cnt].locrec_offset);
-
- g_hash_table_insert (gdm_available_locales_map, g_strdup (locale->id), locale);
+ add_locale (names[cnt].name);
}
g_free (names);
@@ -425,48 +442,7 @@
ndirents = scandir (GNOMELOCALEDIR, &dirents, select_dirs, alphasort);
for (cnt = 0; cnt < ndirents; ++cnt) {
- GdmLocale *locale;
- GdmLocale *old_locale;
- char *name;
-
- if (language_name_is_utf8 (dirents[cnt]->d_name)) {
- name = g_strdup (dirents[cnt]->d_name);
- } else {
- name = g_strdup_printf ("%s.utf8", dirents[cnt]->d_name);
-
- if (!language_name_is_utf8 (name)) {
- g_free (name);
- continue;
- }
- }
-
- if (!language_name_is_valid (name)) {
- continue;
- }
-
- locale = g_new0 (GdmLocale, 1);
- gdm_parse_language_name (name,
- &locale->language_code,
- &locale->territory_code,
- &locale->codeset,
- &locale->modifier);
- g_free (name);
- name = NULL;
-
- 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);
- continue;
- }
- }
-
- g_hash_table_insert (gdm_available_locales_map, g_strdup (locale->id), locale);
+ add_locale (dirents[cnt]->d_name);
}
if (ndirents > 0) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]