X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/d568ed2d3ba5d7d05e4381ee59468a124309f152..6c9079759285e073024f7e3193c990ede2a17cef:/cmdline/acqprogress.cc diff --git a/cmdline/acqprogress.cc b/cmdline/acqprogress.cc index 194d3bb56..485679c1d 100644 --- a/cmdline/acqprogress.cc +++ b/cmdline/acqprogress.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acqprogress.cc,v 1.3 1998/11/23 07:32:24 jgg Exp $ +// $Id: acqprogress.cc,v 1.11 1999/03/16 00:43:55 jgg Exp $ /* ###################################################################### Acquire Progress - Command line progress meter @@ -11,8 +11,10 @@ #include "acqprogress.h" #include #include +#include + #include -#include +#include /*}}}*/ // AcqTextStatus::AcqTextStatus - Constructor /*{{{*/ @@ -46,7 +48,7 @@ void AcqTextStatus::IMSHit(pkgAcquire::ItemDesc &Itm) cout << "Hit " << Itm.Description; if (Itm.Owner->FileSize != 0) - cout << " [" << SizeToStr(Itm.Owner->FileSize) << ']'; + cout << " [" << SizeToStr(Itm.Owner->FileSize) << "b]"; cout << endl; Update = true; }; @@ -70,7 +72,7 @@ void AcqTextStatus::Fetch(pkgAcquire::ItemDesc &Itm) cout << "Get:" << hex << Itm.Owner->ID << dec << ' ' << Itm.Description; if (Itm.Owner->FileSize != 0) - cout << " [" << SizeToStr(Itm.Owner->FileSize) << ']'; + cout << " [" << SizeToStr(Itm.Owner->FileSize) << "b]"; cout << endl; }; /*}}}*/ @@ -93,8 +95,16 @@ void AcqTextStatus::Fail(pkgAcquire::ItemDesc &Itm) if (Quiet <= 0) cout << '\r' << BlankLine << '\r'; - cout << "Err " << Itm.Description << endl; - cout << " " << Itm.Owner->ErrorText << endl; + if (Itm.Owner->Status == pkgAcquire::Item::StatDone) + { + cout << "Ign " << Itm.Description << endl; + } + else + { + cout << "Err " << Itm.Description << endl; + cout << " " << Itm.Owner->ErrorText << endl; + } + Update = true; }; /*}}}*/ @@ -112,9 +122,9 @@ void AcqTextStatus::Stop() cout << '\r' << BlankLine << '\r'; if (FetchedBytes != 0) - cout << "Fetched " << SizeToStr(FetchedBytes) << " in " << + cout << "Fetched " << SizeToStr(FetchedBytes) << "b in " << TimeToStr(ElapsedTime) << " (" << SizeToStr(CurrentCPS) << - "/s)" << endl; + "b/s)" << endl; } /*}}}*/ // AcqTextStatus::Pulse - Regular event pulse /*{{{*/ @@ -148,7 +158,11 @@ void AcqTextStatus::Pulse(pkgAcquire *Owner) if (I->CurrentItem == 0) { if (I->Status.empty() == false) + { snprintf(S,End-S," [%s]",I->Status.c_str()); + Shown = true; + } + continue; } @@ -175,7 +189,7 @@ void AcqTextStatus::Pulse(pkgAcquire *Owner) else { if (Mode == Medium || I->TotalSize == 0) - snprintf(S,End-S," %s",SizeToStr(I->CurrentSize).c_str()); + snprintf(S,End-S," %sb",SizeToStr(I->CurrentSize).c_str()); } S += strlen(S); @@ -186,7 +200,7 @@ void AcqTextStatus::Pulse(pkgAcquire *Owner) snprintf(S,End-S," %u%%", long(double(I->CurrentSize*100.0)/double(I->TotalSize))); else - snprintf(S,End-S,"/%s %u%%",SizeToStr(I->TotalSize).c_str(), + snprintf(S,End-S,"/%sb %u%%",SizeToStr(I->TotalSize).c_str(), long(double(I->CurrentSize*100.0)/double(I->TotalSize))); } S += strlen(S); @@ -197,12 +211,18 @@ 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]; unsigned long ETA = (unsigned long)((TotalBytes - CurrentBytes)/CurrentCPS); - sprintf(Tmp," %s/s %s",SizeToStr(CurrentCPS).c_str(),TimeToStr(ETA).c_str()); + sprintf(Tmp," %sb/s %s",SizeToStr(CurrentCPS).c_str(),TimeToStr(ETA).c_str()); unsigned int Len = strlen(Buffer); unsigned int LenT = strlen(Tmp); if (Len + LenT < ScreenWidth) @@ -212,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; @@ -224,3 +246,21 @@ void AcqTextStatus::Pulse(pkgAcquire *Owner) Update = false; } /*}}}*/ +// AcqTextStatus::MediaChange - Media need to be swapped /*{{{*/ +// --------------------------------------------------------------------- +/* Prompt for a media swap */ +bool AcqTextStatus::MediaChange(string Media,string Drive) +{ + if (Quiet <= 0) + cout << '\r' << BlankLine << '\r'; + cout << "Media Change: Please insert the disc labeled '" << Media << "' in "\ + "the drive '" << Drive << "' and press enter" << endl; + + char C = 0; + while (C != '\n' && C != '\r') + read(STDIN_FILENO,&C,1); + + Update = true; + return true; +} + /*}}}*/