diff options
author | Michael Vogt <egon@bottom> | 2007-04-20 18:31:19 +0200 |
---|---|---|
committer | Michael Vogt <egon@bottom> | 2007-04-20 18:31:19 +0200 |
commit | d4a6c3bbb1a57494256ad09c08cc21c9d4f2182a (patch) | |
tree | 520b24fc6ff556f1cc77ff216c386eb07e4cd593 /apt-pkg/acquire.cc | |
parent | a7a5b0e45e2e66ab2142da8181bcc9cd0b3ba8a8 (diff) | |
parent | bc50fc3013aa4454d10376888e4ccc24d35de334 (diff) |
- only increase the score of installed applications if they
are not obsolete
- fix resolver bug on removal triggered by weak-dependencies
with or-groups
* methods/http.cc:
- send apt version in User-Agent
* apt-pkg/deb/debrecords.cc:
- fix SHA1Hash() return value
* apt-pkg/cdrom.cc:
- only unmount if APT::CDROM::NoMount is false
* methods/cdrom.cc:
- only umount if it was mounted by the method before
* po/gl.po:
- fix error translation that causes trouble to lsb_release
* apt-pkg/acquire-item.cc:
- if decompression of a index fails, delete the index
* apt-pkg/acquire.{cc,h}:
- deal better with duplicated sources.list entries (avoid
double queuing of URLs) - this fixes hangs in bzip/gzip
* apt-pkg/policy.cc:
- allow multiple packages (thanks to David Foerster)
* merged from Christian Perrier:
* mr.po: New Marathi translation Closes: #416806
Diffstat (limited to 'apt-pkg/acquire.cc')
-rw-r--r-- | apt-pkg/acquire.cc | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index fff1b2b6a..e1dccf25a 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -193,9 +193,9 @@ void pkgAcquire::Enqueue(ItemDesc &Item) Item.Owner->Status = Item::StatIdle; // Queue it into the named queue - I->Enqueue(Item); - ToFetch++; - + if(I->Enqueue(Item)) + ToFetch++; + // Some trace stuff if (Debug == true) { @@ -549,11 +549,17 @@ pkgAcquire::Queue::~Queue() // Queue::Enqueue - Queue an item to the queue /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgAcquire::Queue::Enqueue(ItemDesc &Item) +bool pkgAcquire::Queue::Enqueue(ItemDesc &Item) { QItem **I = &Items; - for (; *I != 0; I = &(*I)->Next); - + // move to the end of the queue and check for duplicates here + for (; *I != 0; I = &(*I)->Next) + if (Item.URI == (*I)->URI) + { + Item.Owner->Status = Item::StatDone; + return false; + } + // Create a new item QItem *Itm = new QItem; *Itm = Item; @@ -563,6 +569,7 @@ void pkgAcquire::Queue::Enqueue(ItemDesc &Item) Item.Owner->QueueCounter++; if (Items->Next == 0) Cycle(); + return true; } /*}}}*/ // Queue::Dequeue - Remove an item from the queue /*{{{*/ |