1 --- poldek-0.30-cvs20080820.23/misc.c.old 2008-12-10 10:49:26.000000000 +0100
2 +++ poldek-0.30-cvs20080820.23/misc.c 2008-12-10 10:49:56.000000000 +0100
3 @@ -646,6 +646,15 @@ static char *cut_country_code (const cha
7 +static inline void n_array_push_check_dup(tn_array *langs, char *value)
11 + for (i = 0; i < n_array_size(langs); i++)
12 + if (strcmp(n_array_nth(langs, i), value) == 0) return;
13 + n_array_push(langs, n_strdup(value));
19 @@ -656,24 +665,33 @@ static char *cut_country_code (const cha
20 static inline void lang_match_avlangs(tn_array *avlangs, tn_array *r_langs,
21 const char *lang, int *has_C)
28 if (n_array_bsearch(avlangs, lang)) {
29 if (strcmp(lang, "C") == 0)
32 - n_array_push(r_langs, n_strdup(lang));
34 + n_array_push_check_dup(r_langs, lang);
37 + n_snprintf(lang_utf8, sizeof(lang_utf8), "%s.UTF-8", lang);
38 + if (n_array_bsearch(avlangs, lang_utf8))
39 + n_array_push_check_dup(r_langs, lang_utf8);
41 /* second try, without country code */
42 if ((cut = cut_country_code(lang))) {
43 if (n_array_bsearch(avlangs, cut)) {
44 if (strcmp(cut, "C") == 0)
47 - n_array_push(r_langs, cut);
49 + n_array_push_check_dup(r_langs, cut);
51 + n_snprintf(lang_utf8, sizeof(lang_utf8), "%s.UTF-8", cut);
52 + if (n_array_bsearch(avlangs, lang_utf8))
53 + n_array_push_check_dup(r_langs, lang_utf8);