diff options
-rw-r--r-- | apt-pkg/aptconfiguration.cc | 2 | ||||
-rw-r--r-- | debian/apt.cron.daily | 2 | ||||
-rw-r--r-- | debian/changelog | 10 | ||||
-rw-r--r-- | methods/mirror.cc | 18 |
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()) { |