tags 502240 + patch
thanks
On Tue, Oct 14, 2008 at 09:39:36PM +0200, Frans Pop wrote:
> When localechooser sets debconf/language to a set of languages (preferred
> + fall-back languages, e.g. se_NO:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en for
> Northern Sami), cdebconf should ensure that *all* relevant translations
> are kept when translations are dropped with DEBCONF_DROP_TRANSLATIONS
> set.
Indeed, cdebconf was only keeping translation for the first language
of the set.
The attached patch should fix this, but as I am currently lacking a
proper environment to do a full d-i test, it would be great if someone
could verify that it really fixes the issue.
Cheers,
--
Jérémy Bobbio .''`.
lunar@debian.org : :Ⓐ : # apt-get install anarchism
`. `'`
`-
diff --git a/packages/cdebconf/src/template.c b/packages/cdebconf/src/template.c
index dd8240a..de93b65 100644
--- a/packages/cdebconf/src/template.c
+++ b/packages/cdebconf/src/template.c
@@ -466,7 +466,7 @@ void template_lset(struct template *t, const char *lang,
char *orig_field;
char *altlang;
char *cp;
- const char *curlang;
+ const char *curlang = NULL;
if (strcasecmp(field, "tag") == 0)
{
@@ -530,24 +530,26 @@ void template_lset(struct template *t, const char *lang,
strcmp(lang, "C") == 0 || strncmp(lang, "en", 2) == 0)
curlang = lang;
else {
- const char *wantlang_full = getlanguage();
char *wantlang;
char *p;
+ struct cache_list_lang *cl;
- if (!wantlang_full)
- wantlang_full = "C";
- wantlang = strdup(wantlang_full);
- p = strpbrk(wantlang, "_.@");
- if (p)
- *p = '\0';
- if (strncmp(lang, wantlang, strlen(wantlang)) == 0)
- curlang = lang;
- else {
- INFO(INFO_VERBOSE, "Dropping %s/%s for %s (wantlang=%s)", t->tag, field, lang, wantlang);
+ getlanguage();
+ for (cl = cache_list_lang_ptr; cl != NULL; cl = cl->next) {
+ wantlang = strdup(cl->lang);
+ p = strpbrk(wantlang, "_.@");
+ if (p)
+ *p = '\0';
+ if (strncmp(lang, wantlang, strlen(wantlang)) == 0) {
+ curlang = lang;
+ break;
+ }
free(wantlang);
+ }
+ if (curlang == NULL) {
+ INFO(INFO_VERBOSE, "Dropping %s/%s for %s", t->tag, field, lang);
return;
}
- free(wantlang);
}
p = t->fields;
Attachment:
signature.asc
Description: Digital signature