X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/1bc849af8f694ab80887bd0e9b94280f78771dbc..b5dc97853ed1884269aa92a98f9f1e37d5591a14:/cmdline/acqprogress.cc diff --git a/cmdline/acqprogress.cc b/cmdline/acqprogress.cc index 2b4d295b4..a5383a838 100644 --- a/cmdline/acqprogress.cc +++ b/cmdline/acqprogress.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acqprogress.cc,v 1.9 1999/02/01 08:11:57 jgg Exp $ +// $Id: acqprogress.cc,v 1.13 1999/04/20 05:59:29 jgg Exp $ /* ###################################################################### Acquire Progress - Command line progress meter @@ -12,7 +12,9 @@ #include #include #include + #include +#include /*}}}*/ // AcqTextStatus::AcqTextStatus - Constructor /*{{{*/ @@ -68,7 +70,7 @@ void AcqTextStatus::Fetch(pkgAcquire::ItemDesc &Itm) if (Quiet <= 0) cout << '\r' << BlankLine << '\r'; - cout << "Get:" << hex << Itm.Owner->ID << dec << ' ' << Itm.Description; + cout << "Get:" << Itm.Owner->ID << ' ' << Itm.Description; if (Itm.Owner->FileSize != 0) cout << " [" << SizeToStr(Itm.Owner->FileSize) << "b]"; cout << endl; @@ -93,7 +95,7 @@ void AcqTextStatus::Fail(pkgAcquire::ItemDesc &Itm) if (Quiet <= 0) cout << '\r' << BlankLine << '\r'; - if (Itm.Owner->Status == pkgAcquire::Item::StatIdle) + if (Itm.Owner->Status == pkgAcquire::Item::StatDone) { cout << "Ign " << Itm.Description << endl; } @@ -168,7 +170,7 @@ void AcqTextStatus::Pulse(pkgAcquire *Owner) // Add in the short description if (I->CurrentItem->Owner->ID != 0) - snprintf(S,End-S," [%x %s",I->CurrentItem->Owner->ID, + snprintf(S,End-S," [%lu %s",I->CurrentItem->Owner->ID, I->CurrentItem->ShortDesc.c_str()); else snprintf(S,End-S," [%s",I->CurrentItem->ShortDesc.c_str()); @@ -183,7 +185,7 @@ void AcqTextStatus::Pulse(pkgAcquire *Owner) // Add the current progress if (Mode == Long) - snprintf(S,End-S," %u",I->CurrentSize); + snprintf(S,End-S," %lu",I->CurrentSize); else { if (Mode == Medium || I->TotalSize == 0) @@ -195,10 +197,10 @@ void AcqTextStatus::Pulse(pkgAcquire *Owner) if (I->TotalSize > 0 && I->CurrentItem->Owner->Complete == false) { if (Mode == Short) - snprintf(S,End-S," %u%%", + snprintf(S,End-S," %lu%%", long(double(I->CurrentSize*100.0)/double(I->TotalSize))); else - snprintf(S,End-S,"/%sb %u%%",SizeToStr(I->TotalSize).c_str(), + snprintf(S,End-S,"/%sb %lu%%",SizeToStr(I->TotalSize).c_str(), long(double(I->CurrentSize*100.0)/double(I->TotalSize))); } S += strlen(S); @@ -209,7 +211,13 @@ void AcqTextStatus::Pulse(pkgAcquire *Owner) if (Shown == false) snprintf(S,End-S," [Working]"); - // Put in the ETA and cps meter + /* Put in the ETA and cps meter, block off signals to prevent strangeness + during resizing */ + sigset_t Sigs,OldSigs; + sigemptyset(&Sigs); + sigaddset(&Sigs,SIGWINCH); + sigprocmask(SIG_BLOCK,&Sigs,&OldSigs); + if (CurrentCPS != 0) { char Tmp[300]; @@ -224,7 +232,9 @@ void AcqTextStatus::Pulse(pkgAcquire *Owner) } } Buffer[ScreenWidth] = 0; - + BlankLine[ScreenWidth] = 0; + sigprocmask(SIG_UNBLOCK,&OldSigs,0); + // Draw the current status if (strlen(Buffer) == strlen(BlankLine)) cout << '\r' << Buffer << flush;