diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2010-03-12 22:10:42 +0100 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2010-03-12 22:10:42 +0100 |
commit | d92dd27135d8a26793d3ad28534f2aaeb5fc7680 (patch) | |
tree | 3a8e55e739dde1626e049bb5424ea919fa623d92 /apt-pkg/indexfile.cc | |
parent | 188c9558929fe6732f799a31f6005532022b2b94 (diff) | |
parent | 0d6c5e7dcb2d4fe5334a4177aff3a2b6e55e6768 (diff) |
* cmdline/apt-get.cc:
- if apt-get source foo=version or foo/distro can not be found,
error out (LP: #502641)
* apt-pkg/indexfile.cc:
- deal correctly with three letter langcodes (LP: #391409)
Diffstat (limited to 'apt-pkg/indexfile.cc')
-rw-r--r-- | apt-pkg/indexfile.cc | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/apt-pkg/indexfile.cc b/apt-pkg/indexfile.cc index 08f71feb0..34fd71b20 100644 --- a/apt-pkg/indexfile.cc +++ b/apt-pkg/indexfile.cc @@ -89,8 +89,11 @@ bool pkgIndexFile::TranslationsAvailable() bool pkgIndexFile::CheckLanguageCode(const char *Lang) { - if (strlen(Lang) == 2 || (strlen(Lang) == 5 && Lang[2] == '_')) - return true; + if (strlen(Lang) == 2 || + strlen(Lang) == 3 || + (strlen(Lang) > 3 && Lang[3] == '_') || + (strlen(Lang) == 5 && Lang[2] == '_')) + return true; if (strcmp(Lang,"C") != 0) _error->Warning("Wrong language code %s", Lang); @@ -112,13 +115,18 @@ string pkgIndexFile::LanguageCode() // we have a mapping of the language codes that contains all the language // codes that need the country code as well // (like pt_BR, pt_PT, sv_SE, zh_*, en_*) - const char *need_full_langcode[] = { "pt","sv","zh","en", NULL }; + const char *need_full_langcode[] = { "cs_", + "en_", + "pt_", + "sv_", + "zh_", + NULL }; for(const char **s = need_full_langcode;*s != NULL; s++) if(lang.find(*s) == 0) return lang.substr(0,5); - if(lang.size() > 2) - return lang.substr(0,2); + if(lang.find("_") != lang.npos) + return lang.substr(0, lang.find("_")); else return lang; } |