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.
signature.asc
Description: This is a digitally signed message part