Please try the following patch.
Ben.
diff -Nru cdebconf-0.137/src/template.c cdebconf-0.137+nmu1/src/template.c
--- cdebconf-0.137/src/template.c 2008-09-14 15:28:22.000000000 +0100
+++ cdebconf-0.137+nmu1/src/template.c 2008-11-29 18:32:20.000000000 +0000
@@ -530,24 +530,20 @@
strcmp(lang, "C") == 0 || strncmp(lang, "en", 2) == 0)
curlang = lang;
else {
- const char *wantlang_full = getlanguage();
- char *wantlang;
- char *p;
-
- 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);
- free(wantlang);
- return;
- }
- free(wantlang);
+ struct cache_list_lang *cl;
+
+ /* Could this language possibly be selected by template_lget()? */
+ getlanguage();
+ for (cl = cache_list_lang_ptr; cl != NULL; cl = cl->next)
+ if (strcmp(cl->lang, lang) == 0 ||
+ (strlen(cl->lang) == 2 && strncmp(cl->lang, lang, 2) == 0))
+ break;
+ if (cl == NULL) {
+ INFO(INFO_VERBOSE, "Dropping %s/%s for %s (cache_cur_lang=%s)", t->tag, field, lang, cache_cur_lang);
+ return;
+ }
+
+ curlang = lang;
}
p = t->fields;
--- END ---
--
Ben Hutchings
Any smoothly functioning technology is indistinguishable from a rigged demo.
Attachment:
signature.asc
Description: This is a digitally signed message part