]> git.saurik.com Git - apt.git/blobdiff - ftparchive/contents.cc
* apt-pkg/contrib/cdromutl.cc:
[apt.git] / ftparchive / contents.cc
index 1f2cbcc3d2ff3ba78c58cb165bcd845665e7a2c5..eadced626125cfb574d0dca5544f8412d769131d 100644 (file)
@@ -13,7 +13,7 @@
    removing the massive sort time overhead.
    
    By breaking all the pathnames into components and storing them 
    removing the massive sort time overhead.
    
    By breaking all the pathnames into components and storing them 
-   separately a space savings is realized by not duplicating the string
+   separately a space saving is realized by not duplicating the string
    over and over again. Ultimately this saving is sacrificed to storage of
    the tree structure itself but the tree structure yields a speed gain
    in the sorting and processing. Ultimately it takes about 5 seconds to
    over and over again. Ultimately this saving is sacrificed to storage of
    the tree structure itself but the tree structure yields a speed gain
    in the sorting and processing. Ultimately it takes about 5 seconds to
 #include "contents.h"
 
 #include <apti18n.h>
 #include "contents.h"
 
 #include <apti18n.h>
+#include <apt-pkg/debfile.h>
 #include <apt-pkg/extracttar.h>
 #include <apt-pkg/error.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <apt-pkg/extracttar.h>
 #include <apt-pkg/error.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <malloc.h>    
+#include <malloc.h>
                                                                        /*}}}*/
 
 // GenContents::~GenContents - Free allocated memory                   /*{{{*/
                                                                        /*}}}*/
 
 // GenContents::~GenContents - Free allocated memory                   /*{{{*/
@@ -305,29 +306,7 @@ void GenContents::DoPrint(FILE *Out,GenContents::Node *Top, char *Buf)
 bool ContentsExtract::Read(debDebFile &Deb)
 {
    Reset();
 bool ContentsExtract::Read(debDebFile &Deb)
 {
    Reset();
-   
-   // Get the archive member and positition the file 
-   const ARArchive::Member *Member = Deb.GotoMember("data.tar.gz");
-   const char *Compressor = "gzip";
-   if (Member == 0) {
-      Member = Deb.GotoMember("data.tar.bz2");
-      Compressor = "bzip2";
-   }
-   if (Member == 0) {
-      Member = Deb.GotoMember("data.tar.lzma");
-      Compressor = "lzma";
-   }
-   if (Member == 0) {
-      _error->Error(_("Internal error, could not locate member %s"),
-                   "data.tar.{gz,bz2,lzma}");
-      return false;
-   }
-      
-   // Extract it.
-   ExtractTar Tar(Deb.GetFile(),Member->Size,Compressor);
-   if (Tar.Go(*this) == false)
-      return false;   
-   return true;   
+   return Deb.ExtractArchive(*this);
 }
                                                                        /*}}}*/
 // ContentsExtract::DoItem - Extract an item                           /*{{{*/
 }
                                                                        /*}}}*/
 // ContentsExtract::DoItem - Extract an item                           /*{{{*/
@@ -399,7 +378,7 @@ bool ContentsExtract::TakeContents(const void *NewData,unsigned long Length)
 // ContentsExtract::Add - Read the contents data into the sorter       /*{{{*/
 // ---------------------------------------------------------------------
 /* */
 // ContentsExtract::Add - Read the contents data into the sorter       /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-void ContentsExtract::Add(GenContents &Contents,string Package)
+void ContentsExtract::Add(GenContents &Contents,string const &Package)
 {
    const char *Start = Data;
    char *Pkg = Contents.Mystrdup(Package.c_str());
 {
    const char *Start = Data;
    char *Pkg = Contents.Mystrdup(Package.c_str());