diff options
Diffstat (limited to 'apt-pkg/pkgrecords.cc')
-rw-r--r-- | apt-pkg/pkgrecords.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/apt-pkg/pkgrecords.cc b/apt-pkg/pkgrecords.cc index b3105da44..bb8b05759 100644 --- a/apt-pkg/pkgrecords.cc +++ b/apt-pkg/pkgrecords.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: pkgrecords.cc,v 1.1 1998/08/09 00:51:35 jgg Exp $ +// $Id: pkgrecords.cc,v 1.2 1998/08/19 06:16:10 jgg Exp $ /* ###################################################################### Package Records - Allows access to complete package description records @@ -15,6 +15,7 @@ #include <apt-pkg/pkgrecords.h> #include <apt-pkg/debrecords.h> #include <apt-pkg/error.h> +#include <apt-pkg/configuration.h> /*}}}*/ // Records::pkgRecords - Constructor /*{{{*/ @@ -22,13 +23,25 @@ /* This will create the necessary structures to access the status files */ pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), Files(0) { + string ListDir = _config->FindDir("Dir::State::lists"); + Files = new PkgFile[Cache.HeaderP->PackageFileCount]; for (pkgCache::PkgFileIterator I = Cache.FileBegin(); I.end() == false; I++) { - Files[I->ID].File = new FileFd(I.FileName(),FileFd::ReadOnly); + // 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(ListDir + I.FileName(),FileFd::ReadOnly); if (_error->PendingError() == true) return; + + // Create the parser Files[I->ID].Parse = new debRecordParser(*Files[I->ID].File); if (_error->PendingError() == true) return; |