X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/23d35ec15a849ee755f51a99939b0131e8faefa5..30c8107e9c56d7d78dcf9136f94aeed9d631dfb3:/methods/aptmethod.h diff --git a/methods/aptmethod.h b/methods/aptmethod.h new file mode 100644 index 000000000..61d7b78f1 --- /dev/null +++ b/methods/aptmethod.h @@ -0,0 +1,37 @@ +#ifndef APT_APTMETHOD_H +#define APT_APTMETHOD_H + +#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) {}; +}; +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