]> git.saurik.com Git - apt.git/blobdiff - ftparchive/contents.h
don't leak dpkg statusfd pipe in debugging
[apt.git] / ftparchive / contents.h
index 5b5092b66b167dfd93fc84ac5ccf588807612bd1..bc691d473fa684d903cfe2dc157277ae29fae839 100644 (file)
@@ -9,12 +9,16 @@
                                                                        /*}}}*/
 #ifndef CONTENTS_H
 #define CONTENTS_H
-    
-#include <stdlib.h>
-#include <stdio.h>
-#include <apt-pkg/debfile.h>
+
 #include <apt-pkg/dirstream.h>
 
+#include <stddef.h>
+#include <stdio.h>
+#include <string>
+
+class debDebFile;
+class FileFd;
+
 class GenContents
 {
    struct Node
@@ -51,14 +55,14 @@ class GenContents
    unsigned long NodeLeft;
    
    Node *Grab(Node *Top,const char *Name,const char *Package);
-   void WriteSpace(FILE *Out,unsigned int Current,unsigned int Target);
-   void DoPrint(FILE *Out,Node *Top, char *Buf);
+   void WriteSpace(std::string &out, size_t Current, size_t Target);
+   void DoPrint(FileFd &Out,Node *Top, char *Buf);
    
    public:
    
    char *Mystrdup(const char *From);
    void Add(const char *Dir,const char *Package);   
-   void Print(FILE *Out);
+   void Print(FileFd &Out);
 
    GenContents() : BlockList(0), StrPool(0), StrLeft(0), 
                    NodePool(0), NodeLeft(0) {};
@@ -71,19 +75,19 @@ class ContentsExtract : public pkgDirStream
 
    // The Data Block
    char *Data;
-   unsigned long MaxSize;
-   unsigned long CurSize;
+   unsigned long long MaxSize;
+   unsigned long long CurSize;
    void AddData(const char *Text);
    
    bool Read(debDebFile &Deb);
    
-   virtual bool DoItem(Item &Itm,int &Fd);      
+   virtual bool DoItem(Item &Itm,int &Fd) APT_OVERRIDE;      
    void Reset() {CurSize = 0;};
-   bool TakeContents(const void *Data,unsigned long Length);
-   void Add(GenContents &Contents,string const &Package);
+   bool TakeContents(const void *Data,unsigned long long Length);
+   void Add(GenContents &Contents,std::string const &Package);
    
-   ContentsExtract() : Data(0), MaxSize(0), CurSize(0) {};
-   virtual ~ContentsExtract() {delete [] Data;};
+   ContentsExtract();
+   virtual ~ContentsExtract();
 };
 
 #endif