From 59a704f0efe9cf243f1b27ac833558b89728aa9c Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Mon, 22 Aug 2005 08:48:50 +0000 Subject: * rred.cc: use the d'tor of FileFd to close the file-fd; acquuire-item.cc: make the QueueNextDiff() code more robust --- apt-pkg/acquire-item.cc | 15 +++++++++------ methods/rred.cc | 11 ++--------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 166845868..43d29c737 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -218,9 +218,8 @@ string pkgAcqIndexDiffs::Custom600Headers() void pkgAcqIndexDiffs::Failed(string Message,pkgAcquire::MethodConfig *Cnf) { - if(Debug) - std::clog << "Failed(): " << Desc.URI << std::endl - << "Falling back to big package file" << std::endl; + std::clog << "pkgAcqIndexDiffs failed: " << Desc.URI << std::endl + << "Falling back to normal index file aquire" << std::endl; new pkgAcqIndex(Owner, RealURI, Desc.Description,Desc.ShortDesc, ExpectedMD5); Finish(); @@ -268,9 +267,11 @@ bool pkgAcqIndexDiffs::QueueNextDiff() // remove all patches until the next matching patch is found // this requires the Index file to be ordered for(vector::iterator I=available_patches.begin(); - I != available_patches.end() && (*I).sha1 != local_sha1; - I++) + available_patches.size() > 0 && I != available_patches.end() + && (*I).sha1 != local_sha1; + I++) { available_patches.erase(I); + } // error checking and falling back if no patch was found if(available_patches.size() == 0) { @@ -433,9 +434,11 @@ void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash, available_patches.erase(available_patches.begin()); // move into place - if(Debug) + if(Debug) + { std::clog << "Moving patched file in place: " << std::endl << DestFile << " -> " << FinalFile << std::endl; + } Rename(DestFile,FinalFile); // see if there is more to download diff --git a/methods/rred.cc b/methods/rred.cc index e28dc6855..3097fca02 100644 --- a/methods/rred.cc +++ b/methods/rred.cc @@ -178,7 +178,8 @@ bool RredMethod::Fetch(FetchItem *Itm) URIStart(Res); // Res.Filename the destination filename - // Open the source and destination files + // Open the source and destination files (the d'tor of FileFd will do + // the cleanup/closing of the fds) FileFd From(Path,FileFd::ReadOnly); FileFd Patch(Path+".ed",FileFd::ReadOnly); FileFd To(Itm->DestFile,FileFd::WriteEmpty); @@ -193,14 +194,6 @@ bool RredMethod::Fetch(FetchItem *Itm) // now do the actual patching ed_file(fPatch, fFrom, fTo, &Hash); - // clean up - fclose(fFrom); - fclose(fPatch); - fclose(fTo); - To.Close(); - From.Close(); - Patch.Close(); - // XXX need to get the size // Res.Size = Buf.st_size; Res.TakeHashes(Hash); -- cgit v1.2.3