X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/c5ccf1750dd00e8c4374162b302a0946f7fe3a96..e75f306ea9596c82e3b0c188e9b5203fc9d619da:/apt-pkg/acquire.cc diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index 428bfd50f..3c207fd27 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acquire.cc,v 1.46 2000/01/27 04:15:09 jgg Exp $ +// $Id: acquire.cc,v 1.50 2004/03/17 05:17:11 mdz Exp $ /* ###################################################################### Acquire - File Acquiration @@ -23,12 +23,18 @@ #include #include +#include + +#include + #include #include #include #include /*}}}*/ +using namespace std; + // Acquire::pkgAcquire - Constructor /*{{{*/ // --------------------------------------------------------------------- /* We grab some runtime state from the configuration space */ @@ -52,11 +58,11 @@ pkgAcquire::pkgAcquire(pkgAcquireStatus *Log) : Log(Log) struct stat St; if (stat((_config->FindDir("Dir::State::lists") + "partial/").c_str(),&St) != 0 || S_ISDIR(St.st_mode) == 0) - _error->Error("Lists directory %spartial is missing.", + _error->Error(_("Lists directory %spartial is missing."), _config->FindDir("Dir::State::lists").c_str()); if (stat((_config->FindDir("Dir::Cache::Archives") + "partial/").c_str(),&St) != 0 || S_ISDIR(St.st_mode) == 0) - _error->Error("Archive directory %spartial is missing.", + _error->Error(_("Archive directory %spartial is missing."), _config->FindDir("Dir::Cache::Archives").c_str()); } /*}}}*/ @@ -81,7 +87,11 @@ pkgAcquire::~pkgAcquire() void pkgAcquire::Shutdown() { while (Items.size() != 0) + { + if (Items[0]->Status == Item::StatFetching) + Items[0]->Status = Item::StatError; delete Items[0]; + } while (Queues != 0) { @@ -107,10 +117,15 @@ void pkgAcquire::Remove(Item *Itm) { Dequeue(Itm); - for (vector::iterator I = Items.begin(); I < Items.end(); I++) + for (ItemIterator I = Items.begin(); I != Items.end();) { if (*I == Itm) + { Items.erase(I); + I = Items.begin(); + } + else + I++; } } /*}}}*/ @@ -362,7 +377,7 @@ pkgAcquire::RunResult pkgAcquire::Run() I->Shutdown(false); // Shut down the items - for (Item **I = Items.begin(); I != Items.end(); I++) + for (ItemIterator I = Items.begin(); I != Items.end(); I++) (*I)->Finished(); if (_error->PendingError()) @@ -398,13 +413,13 @@ bool pkgAcquire::Clean(string Dir) { DIR *D = opendir(Dir.c_str()); if (D == 0) - return _error->Errno("opendir","Unable to read %s",Dir.c_str()); + return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str()); string StartDir = SafeGetCWD(); if (chdir(Dir.c_str()) != 0) { closedir(D); - return _error->Errno("chdir","Unable to change to ",Dir.c_str()); + return _error->Errno("chdir",_("Unable to change to %s"),Dir.c_str()); } for (struct dirent *Dir = readdir(D); Dir != 0; Dir = readdir(D)) @@ -417,7 +432,7 @@ bool pkgAcquire::Clean(string Dir) continue; // Look in the get list - vector::iterator I = Items.begin(); + ItemCIterator I = Items.begin(); for (; I != Items.end(); I++) if (flNotDir((*I)->DestFile) == Dir->d_name) break; @@ -435,10 +450,10 @@ bool pkgAcquire::Clean(string Dir) // Acquire::TotalNeeded - Number of bytes to fetch /*{{{*/ // --------------------------------------------------------------------- /* This is the total number of bytes needed */ -unsigned long pkgAcquire::TotalNeeded() +double pkgAcquire::TotalNeeded() { - unsigned long Total = 0; - for (pkgAcquire::Item **I = ItemsBegin(); I != ItemsEnd(); I++) + double Total = 0; + for (ItemCIterator I = ItemsBegin(); I != ItemsEnd(); I++) Total += (*I)->FileSize; return Total; } @@ -446,10 +461,10 @@ unsigned long pkgAcquire::TotalNeeded() // Acquire::FetchNeeded - Number of bytes needed to get /*{{{*/ // --------------------------------------------------------------------- /* This is the number of bytes that is not local */ -unsigned long pkgAcquire::FetchNeeded() +double pkgAcquire::FetchNeeded() { - unsigned long Total = 0; - for (pkgAcquire::Item **I = ItemsBegin(); I != ItemsEnd(); I++) + double Total = 0; + for (ItemCIterator I = ItemsBegin(); I != ItemsEnd(); I++) if ((*I)->Local == false) Total += (*I)->FileSize; return Total; @@ -458,15 +473,15 @@ unsigned long pkgAcquire::FetchNeeded() // Acquire::PartialPresent - Number of partial bytes we already have /*{{{*/ // --------------------------------------------------------------------- /* This is the number of bytes that is not local */ -unsigned long pkgAcquire::PartialPresent() +double pkgAcquire::PartialPresent() { - unsigned long Total = 0; - for (pkgAcquire::Item **I = ItemsBegin(); I != ItemsEnd(); I++) + double Total = 0; + for (ItemCIterator I = ItemsBegin(); I != ItemsEnd(); I++) if ((*I)->Local == false) Total += (*I)->PartialSize; return Total; } - /*}}}*/ + // Acquire::UriBegin - Start iterator for the uri list /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -726,7 +741,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) // Compute the total number of bytes to fetch unsigned int Unknown = 0; unsigned int Count = 0; - for (pkgAcquire::Item **I = Owner->ItemsBegin(); I != Owner->ItemsEnd(); + for (pkgAcquire::ItemCIterator I = Owner->ItemsBegin(); I != Owner->ItemsEnd(); I++, Count++) { TotalItems++; @@ -736,7 +751,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) // Totally ignore local items if ((*I)->Local == true) continue; - + TotalBytes += (*I)->FileSize; if ((*I)->Complete == true) CurrentBytes += (*I)->FileSize;