]> git.saurik.com Git - apt.git/blobdiff - methods/gzip.cc
implement CopyFile without using FileFd::Size()
[apt.git] / methods / gzip.cc
index 7ffcda60f66cace2b11fceaad4cbbeb6521fa346..637aae1249ba88ab4457291546905b768c3e0ee2 100644 (file)
@@ -32,13 +32,23 @@ const char *Prog;
 
 class GzipMethod : public pkgAcqMethod
 {
-   virtual bool Fetch(FetchItem *Itm);
+   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();
+
+   return true;
+}
 
 // GzipMethod::Fetch - Decompress the passed URI                       /*{{{*/
 // ---------------------------------------------------------------------
@@ -81,7 +91,7 @@ bool GzipMethod::Fetch(FetchItem *Itm)
       return false;
 
    // Read data from source, generate checksums and write
-   Hashes Hash;
+   Hashes Hash(Itm->ExpectedHashes);
    bool Failed = false;
    while (1) 
    {
@@ -140,7 +150,5 @@ int main(int, char *argv[])
 
    GzipMethod Mth;
 
-   Mth.DropPrivsOrDie();
-
    return Mth.Run();
 }