1 // -*- mode: cpp; mode: fold -*-
3 /* ######################################################################
4 The scenario file is designed to work as an intermediate file between
5 APT and the resolver. Its on propose very similar to a dpkg status file
6 ##################################################################### */
8 // Include Files /*{{{*/
11 #include <apt-pkg/edspindexfile.h>
12 #include <apt-pkg/edsplistparser.h>
13 #include <apt-pkg/error.h>
14 #include <apt-pkg/fileutl.h>
15 #include <apt-pkg/indexfile.h>
16 #include <apt-pkg/pkgcache.h>
17 #include <apt-pkg/pkgrecords.h>
25 edspIndex::edspIndex(std::string
const &File
) : pkgDebianIndexRealFile(File
, true), d(NULL
)
28 std::string
edspIndex::GetComponent() const
32 std::string
edspIndex::GetArchitecture() const
36 bool edspIndex::HasPackages() const
40 bool edspIndex::Exists() const
44 uint8_t edspIndex::GetIndexFlags() const
48 bool edspIndex::OpenListFile(FileFd
&Pkg
, std::string
const &FileName
)
50 if (FileName
.empty() == false && FileName
!= "/nonexistent/stdin")
51 return pkgDebianIndexRealFile::OpenListFile(Pkg
, FileName
);
52 if (Pkg
.OpenDescriptor(STDIN_FILENO
, FileFd::ReadOnly
) == false)
53 return _error
->Error("Problem opening %s",FileName
.c_str());
56 pkgCacheListParser
* edspIndex::CreateListParser(FileFd
&Pkg
)
58 if (Pkg
.IsOpen() == false)
60 _error
->PushToStack();
61 pkgCacheListParser
* const Parser
= new edspListParser(&Pkg
);
62 bool const newError
= _error
->PendingError();
63 _error
->MergeWithStack();
64 return newError
? NULL
: Parser
;
68 // Index File types for APT /*{{{*/
69 class APT_HIDDEN edspIFType
: public pkgIndexFile::Type
72 virtual pkgRecords::Parser
*CreatePkgParser(pkgCache::PkgFileIterator
const &) const APT_OVERRIDE
74 // we don't have a record parser for this type as the file is not presistent
77 edspIFType() {Label
= "EDSP scenario file";};
79 APT_HIDDEN edspIFType _apt_Edsp
;
81 const pkgIndexFile::Type
*edspIndex::GetType() const
87 edspIndex::~edspIndex() {}