X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/ac5b205a831168ee76e8760e19eb7d43aa361851..8c64fc132ce0743f02b4d7216a3646a8fb93d8b6:/apt-pkg/acquire-item.h diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index f56fd0465..3649d7a03 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -83,6 +83,38 @@ class pkgAcquire::Item }; // item for index diffs + +struct DiffInfo { + string file; + string sha1; + unsigned long size; +}; + +class pkgAcqDiffIndex : public pkgAcquire::Item +{ + protected: + bool Debug; + pkgAcquire::ItemDesc Desc; + string RealURI; + string ExpectedMD5; + string CurrentPackagesFile; + string Description; + + public: + // Specialized action members + virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(string Message,unsigned long Size,string Md5Hash, + pkgAcquire::MethodConfig *Cnf); + virtual string DescURI() {return RealURI + "Index";}; + virtual string Custom600Headers(); + + // helpers + bool ParseDiffIndex(string IndexDiffFile); + + pkgAcqDiffIndex(pkgAcquire *Owner,string URI,string URIDesc, + string ShortDesct, string ExpectedMD5); +}; + class pkgAcqIndexDiffs : public pkgAcquire::Item { protected: @@ -90,12 +122,12 @@ class pkgAcqIndexDiffs : public pkgAcquire::Item pkgAcquire::ItemDesc Desc; string RealURI; string ExpectedMD5; + // this is the SHA-1 sum we expect after the patching - string ServerSha1; - string CurrentPackagesFile; string Description; - vector needed_files; - + vector available_patches; + enum {StateFetchIndex,StateFetchDiff,StateUnzipDiff,StateApplyDiff} State; + public: // Specialized action members @@ -104,17 +136,14 @@ class pkgAcqIndexDiffs : public pkgAcquire::Item pkgAcquire::MethodConfig *Cnf); virtual string DescURI() {return RealURI + "Index";}; - // various helpers - bool ParseIndexDiff(string IndexDiffFile); - void QueueDiffIndex(string URI); bool QueueNextDiff(); bool ApplyDiff(string PatchFile); void Finish(bool allDone=false); pkgAcqIndexDiffs(pkgAcquire *Owner,string URI,string URIDesc, string ShortDesct, string ExpectedMD5, - vector diffs=vector()); + vector diffs=vector()); }; // Item class for index files @@ -127,6 +156,7 @@ class pkgAcqIndex : public pkgAcquire::Item pkgAcquire::ItemDesc Desc; string RealURI; string ExpectedMD5; + string CompressionExtension; public: @@ -135,7 +165,7 @@ class pkgAcqIndex : public pkgAcquire::Item virtual void Done(string Message,unsigned long Size,string Md5Hash, pkgAcquire::MethodConfig *Cnf); virtual string Custom600Headers(); - virtual string DescURI() {return RealURI + ".gz";}; + virtual string DescURI() {return RealURI + CompressionExtension;}; pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc, string ShortDesct, string ExpectedMD5, string compressExt=""); @@ -185,8 +215,10 @@ class pkgAcqMetaIndex : public pkgAcquire::Item const vector* IndexTargets; indexRecords* MetaIndexParser; bool AuthPass; + // required to deal gracefully with problems caused by incorrect ims hits + bool IMSHit; - bool VerifyVendor(); + bool VerifyVendor(string Message); void RetrievalDone(string Message); void AuthDone(string Message); void QueueIndexes(bool verify); @@ -258,9 +290,14 @@ class pkgAcqFile : public pkgAcquire::Item pkgAcquire::MethodConfig *Cnf); virtual string MD5Sum() {return Md5Hash;}; virtual string DescURI() {return Desc.URI;}; - - pkgAcqFile(pkgAcquire *Owner,string URI,string MD5,unsigned long Size, - string Desc,string ShortDesc); + + // If DestFilename is empty, download to DestDir/ if + // DestDir is non-empty, $CWD/ otherwise. If + // DestFilename is NOT empty, DestDir is ignored and DestFilename + // is the absolute name to which the file should be downloaded. + pkgAcqFile(pkgAcquire *Owner, string URI, string MD5, unsigned long Size, + string Desc, string ShortDesc, + const string &DestDir="", const string &DestFilename=""); }; #endif