X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/4aa6ebf6d78131416ef173b1ce472f014da25136..5404685b66b92f93da7ded5f8fe44fbabea38ba4:/apt-pkg/acquire.cc?ds=inline diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index c65aef329..29362fb40 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -466,7 +466,7 @@ void pkgAcquire::SetFds(int &Fd,fd_set *RSet,fd_set *WSet) void pkgAcquire::RunFds(fd_set *RSet,fd_set *WSet) { RunFdsSane(RSet, WSet); -}; +} /*}}}*/ // Acquire::RunFdsSane - Deal with active FDs /*{{{*/ // --------------------------------------------------------------------- @@ -1147,7 +1147,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) // Compute the total number of bytes to fetch unsigned int Unknown = 0; unsigned int Count = 0; - bool UnfetchedReleaseFiles = false; + bool ExpectAdditionalItems = false; for (pkgAcquire::ItemCIterator I = Owner->ItemsBegin(); I != Owner->ItemsEnd(); ++I, ++Count) @@ -1156,12 +1156,9 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) if ((*I)->Status == pkgAcquire::Item::StatDone) ++CurrentItems; - // see if the method tells us to expect more - TotalItems += (*I)->ExpectedAdditionalItems; - - // check if there are unfetched Release files - if ((*I)->Status != pkgAcquire::Item::StatDone && (*I)->ExpectedAdditionalItems > 0) - UnfetchedReleaseFiles = true; + // do we expect to acquire more files than we know of yet? + if ((*I)->ExpectedAdditionalItems > 0) + ExpectAdditionalItems = true; TotalBytes += (*I)->FileSize; if ((*I)->Complete == true) @@ -1218,7 +1215,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) double const OldPercent = Percent; // calculate the percentage, if we have too little data assume 1% - if (TotalBytes > 0 && UnfetchedReleaseFiles) + if (ExpectAdditionalItems) Percent = 0; else // use both files and bytes because bytes can be unreliable @@ -1261,13 +1258,9 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) snprintf(msg,sizeof(msg), _("Retrieving file %li of %li"), i, TotalItems); // build the status str - status << "dlstatus:" << i - << ":" << std::setprecision(3) << Percent - << ":" << msg - << endl; - - std::string const dlstatus = status.str(); - FileFd::Write(fd, dlstatus.c_str(), dlstatus.size()); + std::string dlstatus; + strprintf(dlstatus, "dlstatus:%ld:%.4f:%s\n", i, Percent, msg); + FileFd::Write(fd, dlstatus.data(), dlstatus.size()); } return true;