X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/4d055c05ce287dabd9e224af5c71d690a44b2db6..ef25649c3d6a535706d1039aba128e1b22341f91:/apt-pkg/contrib/progress.cc diff --git a/apt-pkg/contrib/progress.cc b/apt-pkg/contrib/progress.cc index ab81e0643..84ee4c124 100644 --- a/apt-pkg/contrib/progress.cc +++ b/apt-pkg/contrib/progress.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: progress.cc,v 1.11 2001/05/07 05:25:13 jgg Exp $ +// $Id: progress.cc,v 1.12 2003/01/11 07:17:04 jgg Exp $ /* ###################################################################### OpProgress - Operation Progress @@ -8,9 +8,6 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#ifdef __GNUG__ -#pragma implementation "apt-pkg/progress.h" -#endif #include #include #include @@ -19,6 +16,7 @@ #include #include +#include /*}}}*/ using namespace std; @@ -50,7 +48,7 @@ void OpProgress::Progress(unsigned long Cur) // --------------------------------------------------------------------- /* */ void OpProgress::OverallProgress(unsigned long Current, unsigned long Total, - unsigned long Size,string Op) + unsigned long Size,const string &Op) { this->Current = Current; this->Total = Total; @@ -67,27 +65,18 @@ void OpProgress::OverallProgress(unsigned long Current, unsigned long Total, // OpProgress::SubProgress - Set the sub progress state /*{{{*/ // --------------------------------------------------------------------- /* */ -void OpProgress::SubProgress(unsigned long SubTotal,string Op) +void OpProgress::SubProgress(unsigned long SubTotal,const string &Op, + float const Percent) { this->SubTotal = SubTotal; - SubOp = Op; - if (Total == 0) - Percent = 0; - else - Percent = Current*100.0/Total; - Update(); -} - /*}}}*/ -// OpProgress::SubProgress - Set the sub progress state /*{{{*/ -// --------------------------------------------------------------------- -/* */ -void OpProgress::SubProgress(unsigned long SubTotal) -{ - this->SubTotal = SubTotal; - if (Total == 0) - Percent = 0; + if (Op.empty() == false) + SubOp = Op; + if (Total == 0 || Percent == 0) + this->Percent = 0; + else if (Percent != -1) + this->Percent = this->Current += (Size*Percent)/SubTotal; else - Percent = Current*100.0/Total; + this->Percent = Current*100.0/Total; Update(); } /*}}}*/ @@ -115,6 +104,8 @@ bool OpProgress::CheckChange(float Interval) if ((int)LastPercent == (int)Percent) return false; + + LastPercent = Percent; if (Interval == 0) return false; @@ -126,7 +117,6 @@ bool OpProgress::CheckChange(float Interval) if (Diff < Interval) return false; LastTime = Now; - LastPercent = Percent; return true; } /*}}}*/ @@ -136,7 +126,7 @@ bool OpProgress::CheckChange(float Interval) OpTextProgress::OpTextProgress(Configuration &Config) : NoUpdate(false), NoDisplay(false), LastLen(0) { - if (Config.FindI("quiet",0) >= 1) + if (Config.FindI("quiet",0) >= 1 || Config.FindB("quiet::NoUpdate", false) == true) NoUpdate = true; if (Config.FindI("quiet",0) >= 2) NoDisplay = true; @@ -151,9 +141,9 @@ void OpTextProgress::Done() { char S[300]; if (_error->PendingError() == true) - snprintf(S,sizeof(S),_("\r%s... Error!"),OldOp.c_str()); + snprintf(S,sizeof(S),_("%c%s... Error!"),'\r',OldOp.c_str()); else - snprintf(S,sizeof(S),_("\r%s... Done"),OldOp.c_str()); + snprintf(S,sizeof(S),_("%c%s... Done"),'\r',OldOp.c_str()); Write(S); cout << endl; OldOp = string();