| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // -*- mode: cpp; mode: fold -*-
- // Description /*{{{*/
- /* ######################################################################
- The scenario file is designed to work as an intermediate file between
- APT and the resolver. Its on propose very similar to a dpkg status file
- ##################################################################### */
- /*}}}*/
- // Include Files /*{{{*/
- #include <config.h>
- #include <apt-pkg/edspindexfile.h>
- #include <apt-pkg/edsplistparser.h>
- #include <apt-pkg/error.h>
- #include <apt-pkg/fileutl.h>
- #include <apt-pkg/indexfile.h>
- #include <apt-pkg/pkgcache.h>
- #include <apt-pkg/pkgrecords.h>
- #include <stddef.h>
- #include <unistd.h>
- #include <string>
- /*}}}*/
- // EDSP Index /*{{{*/
- edspIndex::edspIndex(std::string const &File) : pkgDebianIndexRealFile(File, true), d(NULL)
- {
- }
- std::string edspIndex::GetComponent() const
- {
- return "edsp";
- }
- std::string edspIndex::GetArchitecture() const
- {
- return std::string();
- }
- bool edspIndex::HasPackages() const
- {
- return true;
- }
- bool edspIndex::Exists() const
- {
- return true;
- }
- uint8_t edspIndex::GetIndexFlags() const
- {
- return 0;
- }
- bool edspIndex::OpenListFile(FileFd &Pkg, std::string const &FileName)
- {
- if (FileName.empty() == false && FileName != "stdin")
- return pkgDebianIndexRealFile::OpenListFile(Pkg, FileName);
- if (Pkg.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly) == false)
- return _error->Error("Problem opening %s",FileName.c_str());
- return true;
- }
- pkgCacheListParser * edspIndex::CreateListParser(FileFd &Pkg)
- {
- if (Pkg.IsOpen() == false)
- return NULL;
- _error->PushToStack();
- pkgCacheListParser * const Parser = new edspListParser(&Pkg);
- bool const newError = _error->PendingError();
- _error->MergeWithStack();
- return newError ? NULL : Parser;
- }
- /*}}}*/
- // Index File types for APT /*{{{*/
- class APT_HIDDEN edspIFType: public pkgIndexFile::Type
- {
- public:
- virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &) const APT_OVERRIDE
- {
- // we don't have a record parser for this type as the file is not presistent
- return NULL;
- };
- edspIFType() {Label = "EDSP scenario file";};
- };
- APT_HIDDEN edspIFType _apt_Edsp;
- const pkgIndexFile::Type *edspIndex::GetType() const
- {
- return &_apt_Edsp;
- }
- /*}}}*/
- edspIndex::~edspIndex() {}
|