#ifndef PKGLIB_INDEXRECORDS_H
#define PKGLIB_INDEXRECORDS_H
-
-#include <apt-pkg/pkgcache.h>
-#include <apt-pkg/fileutl.h>
+#include <apt-pkg/hashes.h>
#include <map>
#include <vector>
+#include <ctime>
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/fileutl.h>
+#endif
+#ifndef APT_10_CLEANER_HEADERS
+#include <apt-pkg/pkgcache.h>
+#endif
class indexRecords
{
- bool parseSumData(const char *&Start, const char *End, string &Name,
- string &Hash, size_t &Size);
+ APT_HIDDEN bool parseSumData(const char *&Start, const char *End, std::string &Name,
+ std::string &Hash, unsigned long long &Size);
public:
struct checkSum;
- string ErrorText;
-
+ std::string ErrorText;
+
+ private:
+ enum APT_HIDDEN { ALWAYS_TRUSTED, NEVER_TRUSTED, CHECK_TRUST } Trusted;
+ // dpointer (for later)
+ void * d;
+
protected:
- string Dist;
- string Suite;
- string ExpectedDist;
- std::map<string,checkSum *> Entries;
+ std::string Dist;
+ std::string Suite;
+ std::string ExpectedDist;
+ time_t ValidUntil;
+ bool SupportsAcquireByHash;
+
+ std::map<std::string,checkSum *> Entries;
public:
- indexRecords();
- indexRecords(const string ExpectedDist);
+ indexRecords(const std::string &ExpectedDist = "");
// Lookup function
- virtual const checkSum *Lookup(const string MetaKey);
+ virtual checkSum *Lookup(const std::string MetaKey);
+ /** \brief tests if a checksum for this file is available */
+ bool Exists(std::string const &MetaKey) const;
std::vector<std::string> MetaKeys();
- virtual bool Load(string Filename);
- string GetDist() const;
- virtual bool CheckDist(const string MaybeDist) const;
- string GetExpectedDist() const;
- virtual ~indexRecords(){};
+ virtual bool Load(std::string Filename);
+ virtual bool CheckDist(const std::string MaybeDist) const;
+
+ std::string GetDist() const;
+ std::string GetSuite() const;
+ bool GetSupportsAcquireByHash() const;
+ time_t GetValidUntil() const;
+ std::string GetExpectedDist() const;
+
+ /** \brief check if source is marked as always trusted */
+ bool IsAlwaysTrusted() const;
+ /** \brief check if source is marked as never trusted */
+ bool IsNeverTrusted() const;
+
+ /** \brief sets an explicit trust value
+ *
+ * \b true means that the source should always be considered trusted,
+ * while \b false marks a source as always untrusted, even if we have
+ * a valid signature and everything.
+ */
+ void SetTrusted(bool const Trusted);
+
+ virtual ~indexRecords();
};
+#if __GNUC__ >= 4
+ // ensure that con- & de-structor don't trigger this warning
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
struct indexRecords::checkSum
{
- string MetaKeyFilename;
- string MD5Hash;
- size_t Size;
+ std::string MetaKeyFilename;
+ HashStringList Hashes;
+ unsigned long long Size;
+
+ APT_DEPRECATED HashString Hash;
};
+#if __GNUC__ >= 4
+ #pragma GCC diagnostic pop
+#endif
#endif