X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/6d38011bb93451dd9da3294614d821c77ac91687..29a59c460403820d0f039398194e321b7e0921fc:/apt-pkg/edsp/edsplistparser.cc diff --git a/apt-pkg/edsp/edsplistparser.cc b/apt-pkg/edsp/edsplistparser.cc index 3e57ea822..bcfdb1017 100644 --- a/apt-pkg/edsp/edsplistparser.cc +++ b/apt-pkg/edsp/edsplistparser.cc @@ -9,6 +9,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include + #include #include #include @@ -18,7 +20,7 @@ /*}}}*/ // ListParser::edspListParser - Constructor /*{{{*/ -edspListParser::edspListParser(FileFd *File, string const &Arch) : debListParser(File, Arch) +edspListParser::edspListParser(FileFd *File, std::string const &Arch) : debListParser(File, Arch) {} /*}}}*/ // ListParser::NewVersion - Fill in the version structure /*{{{*/ @@ -31,11 +33,11 @@ bool edspListParser::NewVersion(pkgCache::VerIterator &Ver) // ListParser::Description - Return the description string /*{{{*/ // --------------------------------------------------------------------- /* Sorry, no description for the resolvers… */ -string edspListParser::Description() +std::string edspListParser::Description() { return ""; } -string edspListParser::DescriptionLanguage() +std::string edspListParser::DescriptionLanguage() { return ""; } @@ -63,46 +65,27 @@ unsigned short edspListParser::VersionHash() bool edspListParser::ParseStatus(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver) { - const char *Start; - const char *Stop; - if (Section.Find("Status",Start,Stop) == false) - return true; - - // UsePackage() is responsible for setting the flag in the default case - bool const static essential = _config->Find("pkgCacheGen::Essential", "") == "installed"; - if (essential == true && - Section.FindFlag("Essential",Pkg->Flags,pkgCache::Flag::Essential) == false) + unsigned long state = 0; + if (Section.FindFlag("Hold",state,pkgCache::State::Hold) == false) return false; + if (state != 0) + Pkg->SelectedState = pkgCache::State::Hold; - // Isolate the first word - const char *I = Start; - for(; I < Stop && *I != ' '; I++); - - // Process the flag field - WordList StatusList[] = {{"installed",pkgCache::State::Installed}, - {}}; - if (GrabWord(string(Start,I-Start),StatusList,Pkg->CurrentState) == false) - return _error->Error("Malformed Status line"); - - /* A Status line marks the package as indicating the current - version as well. Only if it is actually installed.. Otherwise - the interesting dpkg handling of the status file creates bogus - entries. */ - if (!(Pkg->CurrentState == pkgCache::State::NotInstalled || - Pkg->CurrentState == pkgCache::State::ConfigFiles)) + state = 0; + if (Section.FindFlag("Installed",state,pkgCache::State::Installed) == false) + return false; + if (state != 0) { - if (Ver.end() == true) - _error->Warning("Encountered status field in a non-version description"); - else - Pkg->CurrentVer = Ver.Index(); + Pkg->CurrentState = pkgCache::State::Installed; + Pkg->CurrentVer = Ver.Index(); } - + return true; } /*}}}*/ // ListParser::LoadReleaseInfo - Load the release information /*{{{*/ bool edspListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI, - FileFd &File, string component) + FileFd &File, std::string component) { return true; }