// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: pkgrecords.cc,v 1.1 1998/08/09 00:51:35 jgg Exp $
+// $Id: pkgrecords.cc,v 1.5 1999/02/22 03:30:06 jgg Exp $
/* ######################################################################
Package Records - Allows access to complete package description records
#include <apt-pkg/pkgrecords.h>
#include <apt-pkg/debrecords.h>
#include <apt-pkg/error.h>
+#include <apt-pkg/configuration.h>
/*}}}*/
// Records::pkgRecords - Constructor /*{{{*/
/* This will create the necessary structures to access the status files */
pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), Files(0)
{
- Files = new PkgFile[Cache.HeaderP->PackageFileCount];
+ Files = new PkgFile[Cache.HeaderP->PackageFileCount];
for (pkgCache::PkgFileIterator I = Cache.FileBegin();
I.end() == false; I++)
{
+ // We can not initialize if the cache is out of sync.
+ if (I.IsOk() == false)
+ {
+ _error->Error("Package file %s is out of sync.",I.FileName());
+ return;
+ }
+
+ // Create the file
Files[I->ID].File = new FileFd(I.FileName(),FileFd::ReadOnly);
if (_error->PendingError() == true)
return;
- Files[I->ID].Parse = new debRecordParser(*Files[I->ID].File);
+
+ // Create the parser
+ Files[I->ID].Parse = new debRecordParser(*Files[I->ID].File,Cache);
if (_error->PendingError() == true)
return;
}
// Records::Lookup - Get a parser for the package version file /*{{{*/
// ---------------------------------------------------------------------
/* */
-pkgRecords::Parser &pkgRecords::Lookup(pkgCache::VerFileIterator &Ver)
-{
+pkgRecords::Parser &pkgRecords::Lookup(pkgCache::VerFileIterator const &Ver)
+{
PkgFile &File = Files[Ver.File()->ID];
File.Parse->Jump(Ver);