From 23e64f6d0facf9610c1042326ad9850e071e8349 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 4 Nov 2015 14:48:36 +0100 Subject: allow acquire method specific options via Binary scope Allows users who know what they are getting themselves into with this trick to e.g. disable privilege dropping for e.g. file:// until they can fix up the permissions on those repositories. It helps also the test framework and people with a similar setup (= me) to run in less modified environments. --- methods/aptmethod.h | 51 ++++++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 23 deletions(-) (limited to 'methods/aptmethod.h') diff --git a/methods/aptmethod.h b/methods/aptmethod.h index 61d7b78f1..7f7f31dba 100644 --- a/methods/aptmethod.h +++ b/methods/aptmethod.h @@ -2,36 +2,41 @@ #define APT_APTMETHOD_H #include +#include #include class aptMethod : public pkgAcqMethod { char const * const Binary; - public: - virtual bool Configuration(std::string Message) APT_OVERRIDE; - bool CalculateHashes(FetchItem const * const Itm, FetchResult &Res) const; - - aptMethod(char const * const Binary, char const * const Ver, unsigned long const Flags) : pkgAcqMethod(Ver, Flags), Binary(Binary) {}; +public: + virtual bool Configuration(std::string Message) APT_OVERRIDE + { + if (pkgAcqMethod::Configuration(Message) == false) + return false; + + std::string const conf = std::string("Binary::") + Binary; + _config->MoveSubTree(conf.c_str(), NULL); + + DropPrivsOrDie(); + + return true; + } + + bool CalculateHashes(FetchItem const * const Itm, FetchResult &Res) const + { + Hashes Hash(Itm->ExpectedHashes); + FileFd Fd; + if (Fd.Open(Res.Filename, FileFd::ReadOnly) == false || Hash.AddFD(Fd) == false) + return false; + Res.TakeHashes(Hash); + return true; + } + + aptMethod(char const * const Binary, char const * const Ver, unsigned long const Flags) : + pkgAcqMethod(Ver, Flags), Binary(Binary) + {} }; -bool aptMethod::Configuration(std::string Message) -{ - if (pkgAcqMethod::Configuration(Message) == false) - return false; - - DropPrivsOrDie(); - - return true; -} -bool aptMethod::CalculateHashes(FetchItem const * const Itm, FetchResult &Res) const -{ - Hashes Hash(Itm->ExpectedHashes); - FileFd Fd; - if (Fd.Open(Res.Filename, FileFd::ReadOnly) == false || Hash.AddFD(Fd) == false) - return false; - Res.TakeHashes(Hash); - return true; -} #endif -- cgit v1.2.3