From f55ece0eae40e44dca027528a6f11091279d72b3 Mon Sep 17 00:00:00 2001 From: Arch Librarian Date: Mon, 20 Sep 2004 16:50:55 +0000 Subject: Package Record parser Author: jgg Date: 1998-08-09 00:51:33 GMT Package Record parser --- apt-pkg/pkgrecords.cc | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 apt-pkg/pkgrecords.cc (limited to 'apt-pkg/pkgrecords.cc') 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 +#include +#include + /*}}}*/ + +// 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; +} + /*}}}*/ -- cgit v1.2.3