X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/916b89109cd77728004819d4705778e3dc489b2e..db1d1c32149177c0b6ca49e5107ab1f5fd364660:/methods/copy.cc diff --git a/methods/copy.cc b/methods/copy.cc index 8c797ff1f..30a3f4a51 100644 --- a/methods/copy.cc +++ b/methods/copy.cc @@ -32,7 +32,7 @@ class CopyMethod : public pkgAcqMethod public: - CopyMethod() : pkgAcqMethod("1.0",SingleInstance|SendConfig) {}; + CopyMethod() : pkgAcqMethod("1.0",SingleInstance | SendConfig) {}; }; void CopyMethod::CalculateHashes(FetchResult &Res) @@ -55,8 +55,8 @@ void CopyMethod::CalculateHashes(FetchResult &Res) /* */ bool CopyMethod::Fetch(FetchItem *Itm) { - URI Get = Itm->Uri; - std::string File = Get.Path; + // this ensures that relative paths work in copy + std::string File = Itm->Uri.substr(Itm->Uri.find(':')+1); // Stat the file and send a start message struct stat Buf; @@ -79,6 +79,14 @@ bool CopyMethod::Fetch(FetchItem *Itm) return true; } + // just calc the hashes if the source and destination are identical + if (File == Itm->DestFile) + { + CalculateHashes(Res); + URIDone(Res); + return true; + } + // See if the file exists FileFd From(File,FileFd::ReadOnly); FileFd To(Itm->DestFile,FileFd::WriteAtomic);