]>
Commit | Line | Data |
---|---|---|
4f99ff64 | 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 | |
cc8d2ada | 4 | return newlang; |
5 | } | |
6 | ||
cc8d2ada | 7 | +static inline void n_array_push_check_dup(tn_array *langs, char *value) |
8 | +{ | |
4f99ff64 | 9 | + int i; |
10 | + | |
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)); | |
cc8d2ada | 14 | +} |
15 | + | |
16 | /* | |
17 | * lang_match_avlangs: | |
18 | * | |
4f99ff64 | 19 | @@ -656,24 +665,33 @@ static char *cut_country_code (const cha |
cc8d2ada | 20 | static inline void lang_match_avlangs(tn_array *avlangs, tn_array *r_langs, |
21 | const char *lang, int *has_C) | |
22 | { | |
23 | + char lang_utf8[32]; | |
24 | char *cut = NULL; | |
4f99ff64 | 25 | - |
26 | + | |
cc8d2ada | 27 | /* first try */ |
28 | if (n_array_bsearch(avlangs, lang)) { | |
4f99ff64 | 29 | if (strcmp(lang, "C") == 0) |
cc8d2ada | 30 | *has_C = 1; |
31 | - | |
32 | - n_array_push(r_langs, n_strdup(lang)); | |
4f99ff64 | 33 | + |
cc8d2ada | 34 | + n_array_push_check_dup(r_langs, lang); |
35 | } | |
4f99ff64 | 36 | - |
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); | |
40 | + | |
cc8d2ada | 41 | /* second try, without country code */ |
42 | if ((cut = cut_country_code(lang))) { | |
43 | if (n_array_bsearch(avlangs, cut)) { | |
4f99ff64 | 44 | if (strcmp(cut, "C") == 0) |
cc8d2ada | 45 | *has_C = 1; |
46 | - | |
47 | - n_array_push(r_langs, cut); | |
4f99ff64 | 48 | + |
cc8d2ada | 49 | + n_array_push_check_dup(r_langs, cut); |
50 | } | |
4f99ff64 | 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); | |
54 | + | |
cc8d2ada | 55 | + free(cut); |
56 | } | |
57 | } | |
58 |