]> git.saurik.com Git - apt.git/blobdiff - ftparchive/contents.cc
* debian/rules:
[apt.git] / ftparchive / contents.cc
index b6de47b5802ea5768bf3ecb481bc7cdf29c0ed91..b761d9204adb803df418cf5e4e3f17c82ac72a6d 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: contents.cc,v 1.3 2001/02/27 04:24:09 jgg Exp $
+// $Id: contents.cc,v 1.4 2003/02/10 07:34:41 doogie Exp $
 /* ######################################################################
    
    contents - Archive contents generator
 /* ######################################################################
    
    contents - Archive contents generator
@@ -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
@@ -35,6 +35,7 @@
 // Include Files                                                       /*{{{*/
 #include "contents.h"
 
 // Include Files                                                       /*{{{*/
 #include "contents.h"
 
+#include <apti18n.h>
 #include <apt-pkg/extracttar.h>
 #include <apt-pkg/error.h>
 #include <stdio.h>
 #include <apt-pkg/extracttar.h>
 #include <apt-pkg/error.h>
 #include <stdio.h>
@@ -307,11 +308,23 @@ bool ContentsExtract::Read(debDebFile &Deb)
    
    // Get the archive member and positition the file 
    const ARArchive::Member *Member = Deb.GotoMember("data.tar.gz");
    
    // Get the archive member and positition the file 
    const ARArchive::Member *Member = Deb.GotoMember("data.tar.gz");
-   if (Member == 0)
+   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;
       return false;
+   }
       
    // Extract it.
       
    // Extract it.
-   ExtractTar Tar(Deb.GetFile(),Member->Size);
+   ExtractTar Tar(Deb.GetFile(),Member->Size,Compressor);
    if (Tar.Go(*this) == false)
       return false;   
    return true;   
    if (Tar.Go(*this) == false)
       return false;   
    return true;   
@@ -342,7 +355,7 @@ bool ContentsExtract::DoItem(Item &Itm,int &Fd)
         MaxSize = 512*1024/2;
       char *NewData = (char *)realloc(Data,MaxSize*2);
       if (NewData == 0)
         MaxSize = 512*1024/2;
       char *NewData = (char *)realloc(Data,MaxSize*2);
       if (NewData == 0)
-        return _error->Error("realloc - Failed to allocate memory");
+        return _error->Error(_("realloc - Failed to allocate memory"));
       Data = NewData;
       MaxSize *= 2;
    }
       Data = NewData;
       MaxSize *= 2;
    }
@@ -373,7 +386,7 @@ bool ContentsExtract::TakeContents(const void *NewData,unsigned long Length)
       
       char *NewData = (char *)realloc(Data,MaxSize*2);
       if (NewData == 0)
       
       char *NewData = (char *)realloc(Data,MaxSize*2);
       if (NewData == 0)
-        return _error->Error("realloc - Failed to allocate memory");
+        return _error->Error(_("realloc - Failed to allocate memory"));
       Data = NewData;
       MaxSize *= 2;
    }
       Data = NewData;
       MaxSize *= 2;
    }
@@ -386,7 +399,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());