HCoop
/
ntk
/
apt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
consider priorities only for downloadable pkgs in resolver
[ntk/apt.git]
/
apt-pkg
/
srcrecords.cc
diff --git
a/apt-pkg/srcrecords.cc
b/apt-pkg/srcrecords.cc
index
f561053
..
775cf2e
100644
(file)
--- a/
apt-pkg/srcrecords.cc
+++ b/
apt-pkg/srcrecords.cc
@@
-1,6
+1,6
@@
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: srcrecords.cc,v 1.
6 2001/06/10 02:12:09 jgg
Exp $
+// $Id: srcrecords.cc,v 1.
7.2.2 2003/12/26 16:27:34 mdz
Exp $
/* ######################################################################
Source Package Records - Allows access to source package records
/* ######################################################################
Source Package Records - Allows access to source package records
@@
-11,42
+11,45
@@
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
-#ifdef __GNUG__
-#pragma implementation "apt-pkg/srcrecords.h"
-#endif
+#include<config.h>
#include <apt-pkg/srcrecords.h>
#include <apt-pkg/error.h>
#include <apt-pkg/sourcelist.h>
#include <apt-pkg/srcrecords.h>
#include <apt-pkg/error.h>
#include <apt-pkg/sourcelist.h>
-#include <apt-pkg/strutl.h>
-
-#include <apti18n.h>
+#include <apt-pkg/metaindex.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/macros.h>
+
+#include <string.h>
+#include <string>
+#include <vector>
+
+#include <apti18n.h>
/*}}}*/
// SrcRecords::pkgSrcRecords - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* Open all the source index files */
/*}}}*/
// SrcRecords::pkgSrcRecords - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* Open all the source index files */
-pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) : Files(0), Current(0)
+pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) :
d(NULL),
Files(0), Current(0)
{
{
- Files = new Parser *[List.end() - List.begin() + 1];
- memset(Files,0,sizeof(*Files)*(List.end() - List.begin() + 1));
-
- unsigned int Count = 0;
- pkgSourceList::const_iterator I = List.begin();
- for (; I != List.end(); I++)
+ for (pkgSourceList::const_iterator I = List.begin(); I != List.end(); ++I)
{
{
- Files[Count] = (*I)->CreateSrcParser();
- if (_error->PendingError() == true)
- return;
- if (Files[Count] != 0)
- Count++;
+ std::vector<pkgIndexFile *> *Indexes = (*I)->GetIndexFiles();
+ for (std::vector<pkgIndexFile *>::const_iterator J = Indexes->begin();
+ J != Indexes->end(); ++J)
+ {
+ Parser* P = (*J)->CreateSrcParser();
+ if (_error->PendingError() == true)
+ return;
+ if (P != 0)
+ Files.push_back(P);
+ }
}
}
- Files[Count] = 0;
// Doesn't work without any source index files
// Doesn't work without any source index files
- if (
Count == 0
)
+ if (
Files.empty() == true
)
{
{
- _error->Error(_("
Sorry, y
ou must put some 'source' URIs"
+ _error->Error(_("
Y
ou must put some 'source' URIs"
" in your sources.list"));
return;
}
" in your sources.list"));
return;
}
@@
-59,13
+62,9
@@
pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) : Files(0), Current(0)
/* */
pkgSrcRecords::~pkgSrcRecords()
{
/* */
pkgSrcRecords::~pkgSrcRecords()
{
- if (Files == 0)
- return;
-
// Blow away all the parser objects
// Blow away all the parser objects
- for (unsigned int Count = 0; Files[Count] != 0; Count++)
- delete Files[Count];
- delete [] Files;
+ for(std::vector<Parser*>::iterator I = Files.begin(); I != Files.end(); ++I)
+ delete *I;
}
/*}}}*/
// SrcRecords::Restart - Restart the search /*{{{*/
}
/*}}}*/
// SrcRecords::Restart - Restart the search /*{{{*/
@@
-73,10
+72,12
@@
pkgSrcRecords::~pkgSrcRecords()
/* Return all of the parsers to their starting position */
bool pkgSrcRecords::Restart()
{
/* Return all of the parsers to their starting position */
bool pkgSrcRecords::Restart()
{
- Current = Files;
- for (Parser **I = Files; *I != 0; I++)
- (*I)->Restart();
-
+ Current = Files.begin();
+ for (std::vector<Parser*>::iterator I = Files.begin();
+ I != Files.end(); ++I)
+ if ((*I)->Offset() != 0)
+ (*I)->Restart();
+
return true;
}
/*}}}*/
return true;
}
/*}}}*/
@@
-85,9
+86,9
@@
bool pkgSrcRecords::Restart()
/* This searches on both source package names and output binary names and
returns the first found. A 'cursor' like system is used to allow this
function to be called multiple times to get successive entries */
/* This searches on both source package names and output binary names and
returns the first found. A 'cursor' like system is used to allow this
function to be called multiple times to get successive entries */
-pkgSrcRecords::Parser *pkgSrcRecords::Find(const char *Package,bool SrcOnly)
+pkgSrcRecords::Parser *pkgSrcRecords::Find(const char *Package,bool
const &
SrcOnly)
{
{
- if (
*Current == 0
)
+ if (
Current == Files.end()
)
return 0;
while (true)
return 0;
while (true)
@@
-97,8
+98,8
@@
pkgSrcRecords::Parser *pkgSrcRecords::Find(const char *Package,bool SrcOnly)
{
if (_error->PendingError() == true)
return 0;
{
if (_error->PendingError() == true)
return 0;
-
Current++
;
- if (
*Current == 0
)
+
++Current
;
+ if (
Current == Files.end()
)
return 0;
}
return 0;
}
@@
-115,7
+116,7
@@
pkgSrcRecords::Parser *pkgSrcRecords::Find(const char *Package,bool SrcOnly)
// Check for a binary hit
const char **I = (*Current)->Binaries();
// Check for a binary hit
const char **I = (*Current)->Binaries();
- for (; I != 0 && *I != 0;
I++
)
+ for (; I != 0 && *I != 0;
++I
)
if (strcmp(Package,*I) == 0)
return *Current;
}
if (strcmp(Package,*I) == 0)
return *Current;
}
@@
-124,16
+125,15
@@
pkgSrcRecords::Parser *pkgSrcRecords::Find(const char *Package,bool SrcOnly)
// Parser::BuildDepType - Convert a build dep to a string /*{{{*/
// ---------------------------------------------------------------------
/* */
// Parser::BuildDepType - Convert a build dep to a string /*{{{*/
// ---------------------------------------------------------------------
/* */
-const char *pkgSrcRecords::Parser::BuildDepType(unsigned char Type)
+const char *pkgSrcRecords::Parser::BuildDepType(unsigned char
const &
Type)
{
{
- const char *fields[] = {"Build-Depends",
-
"Build-Depends-Indep",
+ const char *fields[] = {"Build-Depends",
+ "Build-Depends-Indep",
"Build-Conflicts",
"Build-Conflicts-Indep"};
"Build-Conflicts",
"Build-Conflicts-Indep"};
- if (Type < 4)
- return fields[Type];
- else
+ if (unlikely(Type >= sizeof(fields)/sizeof(fields[0])))
return "";
return "";
+ return fields[Type];
}
/*}}}*/
}
/*}}}*/