projects
/
apt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
don't try to get acquire lock in simulation mode
[apt.git]
/
ftparchive
/
contents.cc
diff --git
a/ftparchive/contents.cc
b/ftparchive/contents.cc
index eadced626125cfb574d0dca5544f8412d769131d..0ce15b3d632b540be5e6b6597fef3514e3b69ae9 100644
(file)
--- a/
ftparchive/contents.cc
+++ b/
ftparchive/contents.cc
@@
-33,16
+33,20
@@
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
-#include
"contents.h"
+#include
<config.h>
-#include <apti18n.h>
#include <apt-pkg/debfile.h>
#include <apt-pkg/debfile.h>
-#include <apt-pkg/
extracttar
.h>
+#include <apt-pkg/
dirstream
.h>
#include <apt-pkg/error.h>
#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.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 /*{{{*/
@@
-96,7
+100,7
@@
void *GenContents::Node::operator new(size_t Amount,GenContents *Owner)
if (Owner->NodeLeft == 0)
{
Owner->NodeLeft = 10000;
if (Owner->NodeLeft == 0)
{
Owner->NodeLeft = 10000;
- Owner->NodePool =
(Node *)malloc(Amount*Owner->NodeLeft
);
+ Owner->NodePool =
static_cast<Node *>(malloc(Amount*Owner->NodeLeft)
);
BigBlock *Block = new BigBlock;
Block->Block = Owner->NodePool;
Block->Next = Owner->BlockList;
BigBlock *Block = new BigBlock;
Block->Block = Owner->NodePool;
Block->Next = Owner->BlockList;
@@
-229,25
+233,25
@@
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 /*{{{*/
// ---------------------------------------------------------------------
/* We mod 8 it and write tabs where possible. */
}
/*}}}*/
// GenContents::WriteSpace - Write a given number of white space chars /*{{{*/
// ---------------------------------------------------------------------
/* We mod 8 it and write tabs where possible. */
-void GenContents::WriteSpace(
FILE *Out,unsigned int Current,unsigned in
t Target)
+void GenContents::WriteSpace(
std::string &out, size_t Current, size_
t Target)
{
if (Target <= Current)
Target = Current + 1;
{
if (Target <= Current)
Target = Current + 1;
-
+
/* Now we write tabs so long as the next tab stop would not pass
the target */
for (; (Current/8 + 1)*8 < Target; Current = (Current/8 + 1)*8)
/* Now we write tabs so long as the next tab stop would not pass
the target */
for (; (Current/8 + 1)*8 < Target; Current = (Current/8 + 1)*8)
-
fputc('\t',Out
);
+
out.append("\t"
);
// Fill the last bit with spaces
for (; Current < Target; Current++)
// Fill the last bit with spaces
for (; Current < Target; Current++)
-
fputc(' ',Out
);
+
out.append(" "
);
}
/*}}}*/
// GenContents::Print - Display the tree /*{{{*/
}
/*}}}*/
// GenContents::Print - Display the tree /*{{{*/
@@
-256,13
+260,13
@@
void GenContents::WriteSpace(FILE *Out,unsigned int Current,unsigned int Target)
calls itself and runs over each section of the tree printing out
the pathname and the hit packages. We use Buf to build the pathname
summed over all the directory parents of this node. */
calls itself and runs over each section of the tree printing out
the pathname and the hit packages. We use Buf to build the pathname
summed over all the directory parents of this node. */
-void GenContents::Print(F
ILE *
Out)
+void GenContents::Print(F
ileFd &
Out)
{
char Buffer[1024];
Buffer[0] = 0;
DoPrint(Out,&Root,Buffer);
}
{
char Buffer[1024];
Buffer[0] = 0;
DoPrint(Out,&Root,Buffer);
}
-void GenContents::DoPrint(F
ILE *
Out,GenContents::Node *Top, char *Buf)
+void GenContents::DoPrint(F
ileFd &
Out,GenContents::Node *Top, char *Buf)
{
if (Top == 0)
return;
{
if (Top == 0)
return;
@@
-275,31
+279,43
@@
void GenContents::DoPrint(FILE *Out,GenContents::Node *Top, char *Buf)
if (Top->Path != 0)
{
strcat(Buf,Top->Path);
if (Top->Path != 0)
{
strcat(Buf,Top->Path);
-
+
// Do not show the item if it is a directory with dups
if (Top->Path[strlen(Top->Path)-1] != '/' /*|| Top->Dups == 0*/)
{
// Do not show the item if it is a directory with dups
if (Top->Path[strlen(Top->Path)-1] != '/' /*|| Top->Dups == 0*/)
{
-
fputs(Buf,Out)
;
- WriteSpace(
Out,strlen(Buf),
60);
+
std::string out = Buf
;
+ WriteSpace(
out, out.length(),
60);
for (Node *I = Top; I != 0; I = I->Dups)
{
if (I != Top)
for (Node *I = Top; I != 0; I = I->Dups)
{
if (I != Top)
-
fputc(',',Out
);
-
fputs(I->Package,Out
);
+
out.append(","
);
+
out.append(I->Package
);
}
}
- fputc('\n',Out);
- }
- }
-
+ out.append("\n");
+ Out.Write(out.c_str(), out.length());
+ }
+ }
+
// Go along the directory link
DoPrint(Out,Top->DirDown,Buf);
*OldEnd = 0;
// Go along the directory link
DoPrint(Out,Top->DirDown,Buf);
*OldEnd = 0;
-
+
// Go right
DoPrint(Out,Top->BTreeRight,Buf);
}
/*}}}*/
// Go right
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 /*{{{*/
// ---------------------------------------------------------------------
/* */
// ContentsExtract::Read - Read the archive /*{{{*/
// ---------------------------------------------------------------------
/* */
@@
-312,7
+328,7
@@
bool ContentsExtract::Read(debDebFile &Deb)
// 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);
@@
-347,7
+363,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)
{
@@
-378,7
+394,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 const &Package)
+void ContentsExtract::Add(GenContents &Contents,st
d::st
ring const &Package)
{
const char *Start = Data;
char *Pkg = Contents.Mystrdup(Package.c_str());
{
const char *Start = Data;
char *Pkg = Contents.Mystrdup(Package.c_str());