]> git.saurik.com Git - apt.git/blob - methods/aptmethod.h
Use some semantically more correct buffer operations
[apt.git] / methods / aptmethod.h
1 #ifndef APT_APTMETHOD_H
2 #define APT_APTMETHOD_H
3
4 #include <apt-pkg/acquire-method.h>
5 #include <apt-pkg/configuration.h>
6
7 #include <string>
8
9 class aptMethod : public pkgAcqMethod
10 {
11 char const * const Binary;
12
13 public:
14 virtual bool Configuration(std::string Message) APT_OVERRIDE
15 {
16 if (pkgAcqMethod::Configuration(Message) == false)
17 return false;
18
19 std::string const conf = std::string("Binary::") + Binary;
20 _config->MoveSubTree(conf.c_str(), NULL);
21
22 DropPrivsOrDie();
23
24 return true;
25 }
26
27 bool CalculateHashes(FetchItem const * const Itm, FetchResult &Res) const
28 {
29 Hashes Hash(Itm->ExpectedHashes);
30 FileFd Fd;
31 if (Fd.Open(Res.Filename, FileFd::ReadOnly) == false || Hash.AddFD(Fd) == false)
32 return false;
33 Res.TakeHashes(Hash);
34 return true;
35 }
36
37 aptMethod(char const * const Binary, char const * const Ver, unsigned long const Flags) :
38 pkgAcqMethod(Ver, Flags), Binary(Binary)
39 {}
40 };
41
42 #endif