X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/f55ece0eae40e44dca027528a6f11091279d72b3..93bf083d699c60f1ac40297bfa6783fb0cb800d8:/apt-pkg/pkgrecords.cc diff --git a/apt-pkg/pkgrecords.cc b/apt-pkg/pkgrecords.cc index b3105da44..59bc2a1bc 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.3 1998/10/20 02:39:23 jgg Exp $ /* ###################################################################### Package Records - Allows access to complete package description records @@ -15,6 +15,7 @@ #include #include #include +#include /*}}}*/ // 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->FindFile("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;