]> git.pld-linux.org Git - packages/poldek.git/blob - poldek-both_langs.patch
- rel 39; fix patch
[packages/poldek.git] / poldek-both_langs.patch
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
4      return newlang;
5  }
6  
7 +static inline void n_array_push_check_dup(tn_array *langs, char *value)
8 +{
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));      
14 +}
15 +
16  /*
17   * lang_match_avlangs:
18   *
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)
22  {
23 +    char lang_utf8[32];
24      char *cut = NULL;
25 -    
26 +
27      /* first try */
28      if (n_array_bsearch(avlangs, lang)) {
29         if (strcmp(lang, "C") == 0)
30             *has_C = 1;
31 -       
32 -       n_array_push(r_langs, n_strdup(lang));
33 +
34 +       n_array_push_check_dup(r_langs, lang);
35      }
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 +
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)
45                 *has_C = 1;
46 -           
47 -           n_array_push(r_langs, cut);
48 +
49 +           n_array_push_check_dup(r_langs, cut);
50         }
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 +
55 +       free(cut);
56      }
57  }
58  
This page took 0.090464 seconds and 3 git commands to generate.