summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/indexfile.cc18
-rw-r--r--cmdline/apt-get.cc12
-rw-r--r--debian/changelog5
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