summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2011-04-08 14:36:08 +0200
committerMichael Vogt <mvo@debian.org>2011-04-08 14:36:08 +0200
commita6dba137a3d8e011215ba86f55963f33fb8c45ff (patch)
treec769a443be0438678d629d00e5391309ed66e674
parent7ea7ac9efa88b73fc6ff30483a928ef49b95c015 (diff)
parentc996a75cabffa5d3e5bc610d9f1097c2edae606f (diff)
merged from the mvo branch
-rw-r--r--apt-pkg/aptconfiguration.cc2
-rw-r--r--debian/apt.cron.daily2
-rw-r--r--debian/changelog10
-rw-r--r--methods/mirror.cc18
4 files changed, 27 insertions, 5 deletions
diff --git a/apt-pkg/aptconfiguration.cc b/apt-pkg/aptconfiguration.cc
index 14ee09e0d..ca602d4bf 100644
--- a/apt-pkg/aptconfiguration.cc
+++ b/apt-pkg/aptconfiguration.cc
@@ -337,7 +337,7 @@ std::vector<std::string> const Configuration::getArchitectures(bool const &Cache
char* arch = strtok(buf, " ");
while (arch != NULL) {
for (; isspace(*arch) != 0; ++arch);
- if (arch != '\0') {
+ if (arch[0] != '\0') {
char const* archend = arch;
for (; isspace(*archend) == 0 && *archend != '\0'; ++archend);
archs.push_back(string(arch, (archend - arch)));
diff --git a/debian/apt.cron.daily b/debian/apt.cron.daily
index c61bfb9bb..75986f5f5 100644
--- a/debian/apt.cron.daily
+++ b/debian/apt.cron.daily
@@ -466,7 +466,7 @@ fi
# auto upgrade all upgradeable packages
UPGRADE_STAMP=/var/lib/apt/periodic/upgrade-stamp
-if [ $UPDATED -eq 1 ] && which unattended-upgrade >/dev/null && check_stamp $UPGRADE_STAMP $UnattendedUpgradeInterval; then
+if which unattended-upgrade >/dev/null && check_stamp $UPGRADE_STAMP $UnattendedUpgradeInterval; then
if unattended-upgrade $XUUPOPT; then
update_stamp $UPGRADE_STAMP
debug_echo "unattended-upgrade (success)"
diff --git a/debian/changelog b/debian/changelog
index 486a4de8c..6878debc5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,20 @@
apt (0.8.13.3) UNRELEASED; urgency=low
+ [ Julian Andres Klode ]
* apt-pkg/indexcopy.cc:
- Use RealFileExists() instead of FileExists(), allows amongst other
things a directory named Sources to exist on a CD-ROM (LP: #750694).
* apt-pkg/acquire-item.cc:
- Use Release files even if they cannot be verified (LP: #704595)
+
+ [ Michael Vogt ]
+ * mirror method:
+ - do not crash if the mirror file fails to download
+ * apt-pkg/aptconfiguration.cc:
+ - fix comparing for a empty string
+ * debian/apt.cron.daily:
+ - run unattended-upgrades even if there was a error during
+ the apt-get update (LP: #676295)
-- Julian Andres Klode <jak@debian.org> Thu, 07 Apr 2011 11:48:46 +0200
diff --git a/methods/mirror.cc b/methods/mirror.cc
index e499b054b..2cf5c9ce1 100644
--- a/methods/mirror.cc
+++ b/methods/mirror.cc
@@ -141,8 +141,10 @@ bool MirrorMethod::DownloadMirrorFile(string mirror_uri_str)
pkgAcquire Fetcher;
new pkgAcqFile(&Fetcher, fetch, "", 0, "", "", "", MirrorFile);
bool res = (Fetcher.Run() == pkgAcquire::Continue);
- if(res)
+ if(res) {
DownloadedMirrorFile = true;
+ chmod(MirrorFile.c_str(), 0644);
+ }
Fetcher.Shutdown();
if(Debug)
@@ -158,6 +160,9 @@ bool MirrorMethod::RandomizeMirrorFile(string mirror_file)
vector<string> content;
string line;
+ if (!FileExists(mirror_file))
+ return false;
+
// read
ifstream in(mirror_file.c_str());
while ( !in.eof() ) {
@@ -251,6 +256,13 @@ bool MirrorMethod::InitMirrors()
return _error->Error(_("No mirror file '%s' found "), MirrorFile.c_str());
}
+ if (access(MirrorFile.c_str(), R_OK) != 0)
+ {
+ // FIXME: fallback to a default mirror here instead
+ // and provide a config option to define that default
+ return _error->Error(_("Can not read mirror file '%s'"), MirrorFile.c_str());
+ }
+
// FIXME: make the mirror selection more clever, do not
// just use the first one!
// BUT: we can not make this random, the mirror has to be
@@ -354,8 +366,8 @@ bool MirrorMethod::Fetch(FetchItem *Itm)
if(Itm->IndexFile && !DownloadedMirrorFile)
{
Clean(_config->FindDir("Dir::State::mirrors"));
- DownloadMirrorFile(Itm->Uri);
- RandomizeMirrorFile(MirrorFile);
+ if (DownloadMirrorFile(Itm->Uri))
+ RandomizeMirrorFile(MirrorFile);
}
if(AllMirrors.empty()) {