summaryrefslogtreecommitdiff
path: root/ftparchive/contents.h
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-05-11 15:08:08 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2015-05-11 17:22:33 +0200
commit88593886a42025d51d76051da5929b044e42efee (patch)
tree6212ec08e3ac872573ca5faefb400a7914051bee /ftparchive/contents.h
parent8d058ea53b18348f81229049a27d14282bd8d8c1 (diff)
rewrite all TFRewrite instances to use the new pkgTagSection::Write
While it is mostly busywork to rewrite all instances it actually fixes bugs as the data storage used by the new method is std::string rather than a char*, the later mostly created by c_str() from a std::string which the caller has to ensure keeps in scope – something apt-ftparchive actually didn't ensure and relied on copy-on-write behavior instead which c++11 forbids and hence the new default gcc abi doesn't use it.
Diffstat (limited to 'ftparchive/contents.h')
-rw-r--r--ftparchive/contents.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/ftparchive/contents.h b/ftparchive/contents.h
index f58e3278e..953d0d54b 100644
--- a/ftparchive/contents.h
+++ b/ftparchive/contents.h
@@ -17,6 +17,7 @@
#include <string>
class debDebFile;
+class FileFd;
class GenContents
{
@@ -54,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) {};