summaryrefslogtreecommitdiff
path: root/methods/aptmethod.h
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-11-04 14:48:36 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2015-11-05 12:21:33 +0100
commit23e64f6d0facf9610c1042326ad9850e071e8349 (patch)
treecd1beda585ecbb992076838403ef775168e20d08 /methods/aptmethod.h
parent30c8107e9c56d7d78dcf9136f94aeed9d631dfb3 (diff)
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.
Diffstat (limited to 'methods/aptmethod.h')
-rw-r--r--methods/aptmethod.h51
1 files changed, 28 insertions, 23 deletions
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 <apt-pkg/acquire-method.h>
+#include <apt-pkg/configuration.h>
#include <string>
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