]> git.saurik.com Git - apt.git/blobdiff - ftparchive/contents.cc
support parsing EDSP requests Architecture{,s} stanza
[apt.git] / ftparchive / contents.cc
index e11c16ca292c9dec602ea8e1e41c3d04a8681d53..91dd2b8bde68de0ed8d8859aee8debdabe810f5f 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 Files                                                       /*{{{*/
    ##################################################################### */
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
-#include "contents.h"
+#include <config.h>
 
 
-#include <apti18n.h>
-#include <apt-pkg/extracttar.h>
+#include <apt-pkg/debfile.h>
+#include <apt-pkg/dirstream.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/error.h>
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <malloc.h>    
+
+#include "contents.h"
+
+#include <apti18n.h>
                                                                        /*}}}*/
 
 // GenContents::~GenContents - Free allocated memory                   /*{{{*/
                                                                        /*}}}*/
 
 // GenContents::~GenContents - Free allocated memory                   /*{{{*/
@@ -228,7 +232,7 @@ void GenContents::Add(const char *Dir,const char *Package)
    
    // The final component if it does not have a trailing /
    if (I - Start >= 1)
    
    // The final component if it does not have a trailing /
    if (I - Start >= 1)
-      Root = Grab(Root,Start,Package);
+      Grab(Root,Start,Package);
 }
                                                                        /*}}}*/
 // GenContents::WriteSpace - Write a given number of white space chars /*{{{*/
 }
                                                                        /*}}}*/
 // GenContents::WriteSpace - Write a given number of white space chars /*{{{*/
@@ -298,37 +302,31 @@ void GenContents::DoPrint(FILE *Out,GenContents::Node *Top, char *Buf)
    DoPrint(Out,Top->BTreeRight,Buf);  
 }
                                                                        /*}}}*/
    DoPrint(Out,Top->BTreeRight,Buf);  
 }
                                                                        /*}}}*/
-
+// ContentsExtract Constructor                                         /*{{{*/
+ContentsExtract::ContentsExtract()
+   : Data(0), MaxSize(0), CurSize(0) 
+{
+};
+                                                                       /*}}}*/
+// ContentsExtract Destructor                                          /*{{{*/
+ContentsExtract::~ContentsExtract()
+{
+   free(Data);
+};
+                                                                       /*}}}*/
 // ContentsExtract::Read - Read the archive                            /*{{{*/
 // ---------------------------------------------------------------------
 /* */
 bool ContentsExtract::Read(debDebFile &Deb)
 {
    Reset();
 // ContentsExtract::Read - Read the archive                            /*{{{*/
 // ---------------------------------------------------------------------
 /* */
 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) {
-      _error->Error(_("Internal Error, could not locate member %s"),"data.tar.gz");
-      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                           /*{{{*/
 // ---------------------------------------------------------------------
 /* This just tacks the name onto the end of our memory buffer */
 }
                                                                        /*}}}*/
 // ContentsExtract::DoItem - Extract an item                           /*{{{*/
 // ---------------------------------------------------------------------
 /* This just tacks the name onto the end of our memory buffer */
-bool ContentsExtract::DoItem(Item &Itm,int &Fd)
+bool ContentsExtract::DoItem(Item &Itm, int &/*Fd*/)
 {
    unsigned long Len = strlen(Itm.Name);
    
 {
    unsigned long Len = strlen(Itm.Name);
    
@@ -363,7 +361,7 @@ bool ContentsExtract::DoItem(Item &Itm,int &Fd)
 // ContentsExtract::TakeContents - Load the contents data              /*{{{*/
 // ---------------------------------------------------------------------
 /* */
 // ContentsExtract::TakeContents - Load the contents data              /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-bool ContentsExtract::TakeContents(const void *NewData,unsigned long Length)
+bool ContentsExtract::TakeContents(const void *NewData,unsigned long long Length)
 {
    if (Length == 0)
    {
 {
    if (Length == 0)
    {
@@ -394,7 +392,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,std::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());