]> git.pld-linux.org Git - packages/poldek.git/blame - poldek-both_langs.patch
- fix crash witn index build lp#321546; rel 15
[packages/poldek.git] / poldek-both_langs.patch
CommitLineData
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
This page took 0.043519 seconds and 4 git commands to generate.