diff options
Diffstat (limited to 'apt-pkg/pkgrecords.cc')
-rw-r--r-- | apt-pkg/pkgrecords.cc | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/apt-pkg/pkgrecords.cc b/apt-pkg/pkgrecords.cc new file mode 100644 index 000000000..b3105da44 --- /dev/null +++ b/apt-pkg/pkgrecords.cc @@ -0,0 +1,65 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +// $Id: pkgrecords.cc,v 1.1 1998/08/09 00:51:35 jgg Exp $ +/* ###################################################################### + + Package Records - Allows access to complete package description records + directly from the file. + + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#ifdef __GNUG__ +#pragma implementation "apt-pkg/pkgrecords.h" +#endif +#include <apt-pkg/pkgrecords.h> +#include <apt-pkg/debrecords.h> +#include <apt-pkg/error.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]; + for (pkgCache::PkgFileIterator I = Cache.FileBegin(); + I.end() == false; I++) + { + 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); + if (_error->PendingError() == true) + return; + } +} + /*}}}*/ +// Records::~pkgRecords - Destructor /*{{{*/ +// --------------------------------------------------------------------- +/* */ +pkgRecords::~pkgRecords() +{ + delete [] Files; +} + /*}}}*/ +// Records::Lookup - Get a parser for the package version file /*{{{*/ +// --------------------------------------------------------------------- +/* */ +pkgRecords::Parser &pkgRecords::Lookup(pkgCache::VerFileIterator &Ver) +{ + PkgFile &File = Files[Ver.File()->ID]; + File.Parse->Jump(Ver); + + return *File.Parse; +} + /*}}}*/ +// Records::Pkgfile::~PkgFile - Destructor /*{{{*/ +// --------------------------------------------------------------------- +/* */ +pkgRecords::PkgFile::~PkgFile() +{ + delete Parse; + delete File; +} + /*}}}*/ |