diff options
-rw-r--r-- | apt-pkg/indexfile.cc | 18 | ||||
-rw-r--r-- | cmdline/apt-get.cc | 12 | ||||
-rw-r--r-- | debian/changelog | 5 |
3 files changed, 25 insertions, 10 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; } diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index a39b5c55a..ea236676b 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1317,9 +1317,11 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs, if (Src.empty() == true) { // Sources files have no codename information - if (VerTag.empty() == true && DefRel.empty() == false) - _error->Warning(_("Ignore unavailable target release '%s' of package '%s'"), DefRel.c_str(), TmpSrc.c_str()); - DefRel.clear(); + if (VerTag.empty() == true && DefRel.empty() == false) + { + _error->Error(_("Ignore unavailable target release '%s' of package '%s'"), DefRel.c_str(), TmpSrc.c_str()); + return 0; + } } } if (Src.empty() == true) @@ -1386,8 +1388,8 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs, if (Last != 0 || VerTag.empty() == true) break; //if (VerTag.empty() == false && Last == 0) - _error->Warning(_("Ignore unavailable version '%s' of package '%s'"), VerTag.c_str(), TmpSrc.c_str()); - VerTag.clear(); + _error->Error(_("Ignore unavailable version '%s' of package '%s'"), VerTag.c_str(), TmpSrc.c_str()); + return 0; } if (Last == 0 || Last->Jump(Offset) == false) diff --git a/debian/changelog b/debian/changelog index bf6792c4b..f35a5fe62 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,6 +12,11 @@ apt (0.7.25.3ubuntu2) UNRELEASED; urgency=low * cmdline/apt-mark: - show error on incorrect aguments (LP: #517917), thanks to Torsten Spindler + * 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) [ Robert Collins ] * Change the package index Info methods to allow apt-cache policy to be |