diff options
author | David Kalnischkies <david@kalnischkies.de> | 2015-05-11 15:08:08 +0200 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2015-05-11 17:22:33 +0200 |
commit | 88593886a42025d51d76051da5929b044e42efee (patch) | |
tree | 6212ec08e3ac872573ca5faefb400a7914051bee /ftparchive/contents.h | |
parent | 8d058ea53b18348f81229049a27d14282bd8d8c1 (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.h | 7 |
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) {}; |