diff options
author | David Kalnischkies <david@kalnischkies.de> | 2015-11-04 14:48:36 +0100 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2015-11-05 12:21:33 +0100 |
commit | 23e64f6d0facf9610c1042326ad9850e071e8349 (patch) | |
tree | cd1beda585ecbb992076838403ef775168e20d08 /methods/gzip.cc | |
parent | 30c8107e9c56d7d78dcf9136f94aeed9d631dfb3 (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/gzip.cc')
-rw-r--r-- | methods/gzip.cc | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/methods/gzip.cc b/methods/gzip.cc index 2429069e5..fbfd3bbac 100644 --- a/methods/gzip.cc +++ b/methods/gzip.cc @@ -18,6 +18,7 @@ #include <apt-pkg/hashes.h> #include <apt-pkg/strutl.h> #include <apt-pkg/aptconfiguration.h> +#include "aptmethod.h" #include <string.h> #include <sys/stat.h> @@ -28,27 +29,15 @@ #include <apti18n.h> /*}}}*/ -const char *Prog; - -class GzipMethod : public pkgAcqMethod +class GzipMethod : public aptMethod { + std::string const Prog; virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE; - virtual bool Configuration(std::string Message) APT_OVERRIDE; - - public: - - GzipMethod() : pkgAcqMethod("1.1",SingleInstance | SendConfig) {}; -}; - -bool GzipMethod::Configuration(std::string Message) -{ - if (pkgAcqMethod::Configuration(Message) == false) - return false; - DropPrivsOrDie(); + public: - return true; -} + GzipMethod(std::string const &pProg) : aptMethod(pProg.c_str(),"1.1",SingleInstance | SendConfig), Prog(pProg) {}; +}; // GzipMethod::Fetch - Decompress the passed URI /*{{{*/ // --------------------------------------------------------------------- @@ -68,7 +57,7 @@ bool GzipMethod::Fetch(FetchItem *Itm) if (compressor->Name == Prog) break; if (compressor == compressors.end()) - return _error->Error("Extraction of file %s requires unknown compressor %s", Path.c_str(), Prog); + return _error->Error("Extraction of file %s requires unknown compressor %s", Path.c_str(), Prog.c_str()); // Open the source and destination files FileFd From; @@ -157,10 +146,6 @@ int main(int, char *argv[]) { setlocale(LC_ALL, ""); - Prog = strrchr(argv[0],'/'); - ++Prog; - - GzipMethod Mth; - + GzipMethod Mth(flNotDir(argv[0])); return Mth.Run(); } |