]>
Commit | Line | Data |
---|---|---|
5c6cc6bb | 1 | --- poldek-0.20.1-cvs20070108.22/pkgdir/pndir/description.c.stare 2007-05-29 22:39:55.000000000 +0200 |
2 | +++ poldek-0.20.1-cvs20070108.22/pkgdir/pndir/description.c 2007-05-30 15:11:58.000000000 +0200 | |
3 | @@ -166,6 +166,7 @@ | |
4 | for (i = n_array_size(langs) - 1; i >= 0; i--) { | |
5 | struct tndb *db; | |
6 | const char *lang; | |
7 | + char lang_utf8[24]; | |
8 | char dkey[512]; | |
9 | int dklen; | |
10 | ||
11 | @@ -176,6 +177,19 @@ | |
12 | if ((db = pndir_db_dscr_h_get(db_dscr_h, lang)) == NULL) | |
13 | continue; | |
14 | ||
15 | + snprintf(lang_utf8, sizeof(lang_utf8), "%s.UTF-8", lang); | |
16 | + | |
17 | + dklen = n_snprintf(dkey, sizeof(dkey), "%s%s", key, lang_utf8); | |
18 | + vlen = tndb_get(db, dkey, dklen, val, sizeof(val)); | |
19 | + DBGF("ld %s: %s (%d)\n", pkg_snprintf_s(pkg), lang_utf8, vlen); | |
20 | + if (vlen > 0) { | |
21 | + tn_buf_it it; | |
22 | + n_buf_clean(nbuf); | |
23 | + n_buf_init(nbuf, val, vlen); | |
24 | + n_buf_it_init(&it, nbuf); | |
25 | + pkguinf_restore_i18n(pkgu, &it, lang_utf8); | |
26 | + } | |
27 | + | |
28 | dklen = n_snprintf(dkey, sizeof(dkey), "%s%s", key, lang); | |
29 | vlen = tndb_get(db, dkey, dklen, val, sizeof(val)); | |
30 | DBGF("ld %s: %s (%d)\n", pkg_snprintf_s(pkg), lang, vlen); | |
31 | --- poldek-0.20.1-cvs20070108.22/pkgu.c.stare 2007-05-29 21:40:39.000000000 +0200 | |
32 | +++ poldek-0.20.1-cvs20070108.22/pkgu.c 2007-05-30 16:37:16.000000000 +0200 | |
33 | @@ -15,6 +15,8 @@ | |
34 | */ | |
35 | ||
36 | #include <ctype.h> | |
37 | +#include <iconv.h> | |
38 | +#include <langinfo.h> | |
39 | #include <stdio.h> | |
40 | #include <stdlib.h> | |
41 | #include <string.h> | |
42 | @@ -576,7 +576,27 @@ | |
43 | return 0; | |
44 | description = n_buf_it_getz(it, &dlen); | |
45 | ||
46 | - inf = pkguinf_i18n_new(pkgu->_na, summary, description); | |
47 | + if (strstr(lang, "UTF-8")) { | |
48 | + iconv_t cd; | |
49 | + size_t u_slen = slen, u_dlen = dlen; | |
50 | + char *new_s, *new_d; | |
51 | + char *summary_utf8 = n_malloc(u_slen + 1); | |
52 | + char *description_utf8 = n_malloc(u_dlen + 1); | |
53 | + | |
54 | + new_s = summary_utf8; | |
55 | + new_d = description_utf8; | |
56 | + cd = iconv_open(nl_langinfo(CODESET), "UTF-8"); | |
57 | + iconv(cd, &summary, &slen, &new_s, &u_slen); | |
58 | + iconv(cd, &description, &dlen, &new_d, &u_dlen); | |
59 | + iconv_close(cd); | |
60 | + *new_s = '\0'; | |
61 | + *new_d = '\0'; | |
62 | + inf = pkguinf_i18n_new(pkgu->_na, summary_utf8, description_utf8); | |
63 | + n_free(summary_utf8); | |
64 | + n_free(description_utf8); | |
65 | + } else { | |
66 | + inf = pkguinf_i18n_new(pkgu->_na, summary, description); | |
67 | + } | |
68 | n_hash_insert(pkgu->_ht, lang, inf); | |
69 | ||
70 | pkgu->summary = inf->summary; |