From c58b62ea2a61db534e544565eb4840d9a35d8ebb Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 26 Apr 2017 16:22:30 +0100 Subject: [PATCH] Hoist scan() up from packageversion to packagemeta --- package_meta.cc | 37 +++++++++++++++++++++++++++++++++++-- package_meta.h | 2 ++ package_version.cc | 29 ----------------------------- package_version.h | 2 -- 4 files changed, 37 insertions(+), 33 deletions(-) diff --git a/package_meta.cc b/package_meta.cc index 83018b44..7b797382 100644 --- a/package_meta.cc +++ b/package_meta.cc @@ -44,6 +44,9 @@ using namespace std; #include #include "Generic.h" +#include "download.h" +#include "Exception.h" +#include "resource.h" using namespace std; @@ -590,6 +593,36 @@ packagemeta::logSelectionStatus() const pkg.logAllVersions(); } +/* scan for local copies of package */ +void +packagemeta::scan (const packageversion &pkg, bool mirror_mode) +{ + /* Already have something */ + if (!pkg) + return; + + /* Remove mirror sites. + * FIXME: This is a bit of a hack. + */ + try + { + if (!check_for_cached (*(pkg.source ()), mirror_mode) + && ::source == IDC_SOURCE_LOCALDIR) + pkg.source ()->sites.clear (); + } + catch (Exception * e) + { + // We can ignore these, since we're clearing the source list anyway + if (e->errNo () == APPERR_CORRUPT_PACKAGE) + { + pkg.source ()->sites.clear (); + return; + } + // Unexpected exception. + throw e; + } +} + void packagemeta::ScanDownloadedFiles (bool mirror_mode) { @@ -609,10 +642,10 @@ packagemeta::ScanDownloadedFiles (bool mirror_mode) && (*i != pkg.installed || pkg.installed == pkg.curr || pkg.installed == pkg.exp); - const_cast(*i).scan (lazy_scan); + scan (*i, lazy_scan); packageversion foo = *i; packageversion pkgsrcver = foo.sourcePackage (); - pkgsrcver.scan (lazy_scan); + scan (pkgsrcver, lazy_scan); /* For local installs, if there is no src and no bin, the version * is unavailable diff --git a/package_meta.h b/package_meta.h index 529b2a24..8041aa12 100644 --- a/package_meta.h +++ b/package_meta.h @@ -159,6 +159,8 @@ protected: private: std::string trustLabel(packageversion const &) const; std::vector