]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/indexfile.h
ensure Cnf::FindFile doesn't return files below /dev/null
[apt.git] / apt-pkg / indexfile.h
index 44d39110d2a6504961e662c06666cf0427895749..68753a40af1e6362970b621466df70f52111947f 100644 (file)
@@ -38,6 +38,7 @@ class pkgAcquire;
 #endif
 
 class pkgCacheGenerator;
+class pkgCacheListParser;
 class OpProgress;
 
 class IndexTarget                                                      /*{{{*/
@@ -84,8 +85,20 @@ class IndexTarget                                                    /*{{{*/
       TARGET_OF,
       FILENAME,
       EXISTING_FILENAME,
+      PDIFFS,
+      COMPRESSIONTYPES,
+      DEFAULTENABLED,
+      SOURCESENTRY,
+      BY_HASH,
+      KEEPCOMPRESSEDAS,
+      FALLBACK_OF,
+      IDENTIFIER,
+      ALLOW_INSECURE,
+      ALLOW_WEAK,
+      ALLOW_DOWNGRADE_TO_INSECURE,
    };
    std::string Option(OptionKeys const Key) const;
+   bool OptionBool(OptionKeys const Key) const;
    std::string Format(std::string format) const;
 };
                                                                        /*}}}*/
@@ -105,12 +118,12 @@ class pkgIndexFile
       // Global list of Items supported
       static Type **GlobalList;
       static unsigned long GlobalListLen;
-      static Type *GetType(const char *Type) APT_PURE;
+      static Type *GetType(const char * const Type) APT_PURE;
 
       const char *Label;
 
-      virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator /*File*/) const {return 0;};
-      virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string /*File*/) const {return 0;};
+      virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &/*File*/) const {return 0;};
+      virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string const &/*File*/) const {return 0;};
       Type();
       virtual ~Type() {};
    };
@@ -118,13 +131,13 @@ class pkgIndexFile
    virtual const Type *GetType() const = 0;
    
    // Return descriptive strings of various sorts
-   virtual std::string ArchiveInfo(pkgCache::VerIterator Ver) const;
+   virtual std::string ArchiveInfo(pkgCache::VerIterator const &Ver) const;
    virtual std::string SourceInfo(pkgSrcRecords::Parser const &Record,
                             pkgSrcRecords::File const &File) const;
-   virtual std::string Describe(bool Short = false) const = 0;
+   virtual std::string Describe(bool const Short = false) const = 0;
 
    // Interface for acquire
-   virtual std::string ArchiveURI(std::string /*File*/) const {return std::string();};
+   virtual std::string ArchiveURI(std::string const &/*File*/) const {return std::string();};
 
    // Interface for the record parsers
    virtual pkgSrcRecords::Parser *CreateSrcParser() const {return 0;};
@@ -133,40 +146,82 @@ class pkgIndexFile
    virtual bool Exists() const = 0;
    virtual bool HasPackages() const = 0;
    virtual unsigned long Size() const = 0;
-   virtual bool Merge(pkgCacheGenerator &/*Gen*/, OpProgress* /*Prog*/) const { return false; };
-   APT_DEPRECATED virtual bool Merge(pkgCacheGenerator &Gen, OpProgress &Prog) const
-      { return Merge(Gen, &Prog); };
-   virtual bool MergeFileProvides(pkgCacheGenerator &/*Gen*/,OpProgress* /*Prog*/) const {return true;};
-   APT_DEPRECATED virtual bool MergeFileProvides(pkgCacheGenerator &Gen, OpProgress &Prog) const
-      {return MergeFileProvides(Gen, &Prog);};
+   virtual bool Merge(pkgCacheGenerator &/*Gen*/, OpProgress* const /*Prog*/) { return true; };
    virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const;
 
-   static bool TranslationsAvailable();
-   static bool CheckLanguageCode(const char *Lang);
-   static std::string LanguageCode();
+   APT_DEPRECATED_MSG("These methods make no sense anymore with multi-language support") static bool TranslationsAvailable();
+   /* No intern need for this method anymore as the check for correctness
+      is already done in getLanguages(). Note also that this check is
+      rather bad (doesn't take three character like ast into account).*/
+   APT_DEPRECATED_MSG("These methods make no sense anymore with multi-language support") static bool CheckLanguageCode(const char * const Lang);
+   /* As we have now possibly more than one LanguageCode this method is
+      superseeded by a) private classmembers or b) getLanguages() */
+   APT_DEPRECATED_MSG("These methods make no sense anymore with multi-language support") static std::string LanguageCode();
 
    bool IsTrusted() const { return Trusted; };
 
-   explicit pkgIndexFile(bool Trusted);
+   explicit pkgIndexFile(bool const Trusted);
    virtual ~pkgIndexFile();
 };
 
-class pkgIndexTargetFile : public pkgIndexFile
+class pkgDebianIndexFile : public pkgIndexFile
+{
+protected:
+   virtual std::string IndexFileName() const = 0;
+   virtual std::string GetComponent() const = 0;
+   virtual std::string GetArchitecture() const = 0;
+   virtual std::string GetProgressDescription() const = 0;
+   virtual uint8_t GetIndexFlags() const = 0;
+   virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) = 0;
+   APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg);
+
+public:
+   virtual bool Merge(pkgCacheGenerator &Gen, OpProgress* const Prog) APT_OVERRIDE;
+   virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const APT_OVERRIDE;
+
+   explicit pkgDebianIndexFile(bool const Trusted);
+   virtual ~pkgDebianIndexFile();
+};
+
+class pkgDebianIndexTargetFile : public pkgDebianIndexFile
 {
    void * const d;
 protected:
    IndexTarget const Target;
 
-   std::string IndexFileName() const;
+   virtual std::string IndexFileName() const APT_OVERRIDE;
+   virtual std::string GetComponent() const APT_OVERRIDE;
+   virtual std::string GetArchitecture() const APT_OVERRIDE;
+   virtual std::string GetProgressDescription() const APT_OVERRIDE;
+   virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE;
+
+public:
+   virtual std::string ArchiveURI(std::string const &File) const APT_OVERRIDE;
+   virtual std::string Describe(bool const Short = false) const APT_OVERRIDE;
+   virtual bool Exists() const APT_OVERRIDE;
+   virtual unsigned long Size() const APT_OVERRIDE;
+
+   pkgDebianIndexTargetFile(IndexTarget const &Target, bool const Trusted);
+   virtual ~pkgDebianIndexTargetFile();
+};
+
+class pkgDebianIndexRealFile : public pkgDebianIndexFile
+{
+   void * const d;
+protected:
+   std::string File;
 
+   virtual std::string IndexFileName() const APT_OVERRIDE;
+   virtual std::string GetProgressDescription() const APT_OVERRIDE;
+   virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE;
 public:
-   virtual std::string ArchiveURI(std::string File) const;
-   virtual std::string Describe(bool Short = false) const;
-   virtual bool Exists() const;
-   virtual unsigned long Size() const;
+   virtual std::string Describe(bool const /*Short*/ = false) const APT_OVERRIDE;
+   virtual bool Exists() const APT_OVERRIDE;
+   virtual unsigned long Size() const APT_OVERRIDE;
+   virtual std::string ArchiveURI(std::string const &/*File*/) const APT_OVERRIDE;
 
-   pkgIndexTargetFile(IndexTarget const &Target, bool const Trusted);
-   virtual ~pkgIndexTargetFile();
+   pkgDebianIndexRealFile(std::string const &File, bool const Trusted);
+   virtual ~pkgDebianIndexRealFile();
 };
 
 #endif