summaryrefslogtreecommitdiff
path: root/methods/gzip.cc
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/gzip.cc
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/gzip.cc')
-rw-r--r--methods/gzip.cc31
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();
}