X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/9c14e3d619e713aefa623986b5bbae81a1d6cc94..63b70b21c8416351cd5be9bf8dcf939ffe94079e:/apt-pkg/sourcelist.h diff --git a/apt-pkg/sourcelist.h b/apt-pkg/sourcelist.h index 43739fbcd..4509e54b9 100644 --- a/apt-pkg/sourcelist.h +++ b/apt-pkg/sourcelist.h @@ -1,74 +1,105 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: sourcelist.h,v 1.2 1998/07/09 05:12:31 jgg Exp $ +// $Id: sourcelist.h,v 1.12.2.1 2003/12/24 23:09:17 mdz Exp $ /* ###################################################################### SourceList - Manage a list of sources The Source List class provides access to a list of sources. It - can read them from a file and generate a list of all the permutations. + can read them from a file and generate a list of all the distinct + sources. + + All sources have a type associated with them that defines the layout + of the archive. The exact format of the file is documented in + files.sgml. + + The types are mapped through a list of type definitions which handle + the actual construction of the back end type. After loading a source + list all you have is a list of package index files that have the ability + to be Acquired. + + The vendor machanism is similar, except the vendor types are hard + wired. Before loading the source list the vendor list is loaded. + This doesn't load key data, just the checks to perform. ##################################################################### */ /*}}}*/ -// Header section: pkglib #ifndef PKGLIB_SOURCELIST_H #define PKGLIB_SOURCELIST_H #include #include -#include -#include +#include +#include -#ifdef __GNUG__ -#pragma interface "pkglib/sourcelist.h" -#endif +using std::string; +using std::vector; + + +class pkgAcquire; +class pkgIndexFile; +class metaIndex; -class pkgAquire; class pkgSourceList { public: - /* Each item in the source list, each line can have more than one - item */ - struct Item + // List of supported source list types + class Type { - enum {Deb} Type; - - string URI; - string Dist; - string Section; + public: - bool SetType(string S); - bool SetURI(string S); - string PackagesURI() const; - string PackagesInfo() const; - string SiteOnly(string URI) const; - string ArchiveInfo(pkgCache::VerIterator Ver) const; - string ArchiveURI(string File) const; + // Global list of Items supported + static Type **GlobalList; + static unsigned long GlobalListLen; + static Type *GetType(const char *Type); + + const char *Name; + const char *Label; + + bool FixupURI(string &URI) const; + virtual bool ParseLine(vector &List, + const char *Buffer, + unsigned long const &CurLine,string const &File) const; + virtual bool CreateItem(vector &List,string const &URI, + string const &Dist,string const &Section, + std::map const &Options) const = 0; + Type(); + virtual ~Type() {}; }; - typedef vector::const_iterator const_iterator; - protected: + typedef vector::const_iterator const_iterator; - vector List; + protected: + + vector SrcList; public: bool ReadMainList(); bool Read(string File); - string SanitizeURI(string URI); - const_iterator MatchPkgFile(pkgCache::VerIterator Ver); + + // CNC:2003-03-03 + void Reset(); + bool ReadAppend(string File); + bool ReadSourceDir(string Dir); // List accessors - inline const_iterator begin() const {return List.begin();}; - inline const_iterator end() const {return List.end();}; - inline unsigned int size() const {return List.size();}; - inline bool empty() const {return List.empty();}; + inline const_iterator begin() const {return SrcList.begin();}; + inline const_iterator end() const {return SrcList.end();}; + inline unsigned int size() const {return SrcList.size();}; + inline bool empty() const {return SrcList.empty();}; + + bool FindIndex(pkgCache::PkgFileIterator File, + pkgIndexFile *&Found) const; + bool GetIndexes(pkgAcquire *Owner, bool GetAll=false) const; + // query last-modified time + time_t GetLastModifiedTime(); + pkgSourceList(); - pkgSourceList(string File); + pkgSourceList(string File); + ~pkgSourceList(); }; -ostream &operator <<(ostream &O,pkgSourceList::Item &Itm); - #endif