+ ++I;
+ }
+}
+ /*}}}*/
+// Acquire::AbortTransaction - Remove a transaction /*{{{*/
+void pkgAcquire::AbortTransaction(unsigned long TransactionID)
+{
+ if(_config->FindB("Debug::Acquire::Transaction", false) == true)
+ std::clog << "AbortTransaction: " << TransactionID << std::endl;
+
+ std::vector<Item*> Transaction;
+ for (ItemIterator I = Items.begin(); I != Items.end(); ++I)
+ if((*I)->TransactionID == TransactionID)
+ Transaction.push_back(*I);
+
+ for (std::vector<Item*>::iterator I = Transaction.begin();
+ I != Transaction.end(); ++I)
+ {
+ if(_config->FindB("Debug::Acquire::Transaction", false) == true)
+ std::clog << " Cancel: " << (*I)->DestFile << std::endl;
+ //Dequeue(*I);
+ (*I)->Status = pkgAcquire::Item::StatError;
+ }
+}
+ /*}}}*/
+bool pkgAcquire::TransactionHasError(unsigned long TransactionID)
+{
+ std::vector<Item*> Transaction;
+ for (ItemIterator I = Items.begin(); I != Items.end(); ++I)
+ if((*I)->TransactionID == TransactionID)
+ if((*I)->Status == pkgAcquire::Item::StatError ||
+ (*I)->Status == pkgAcquire::Item::StatAuthError)
+ return true;
+
+ return false;
+}
+// Acquire::CommitTransaction - Commit a transaction /*{{{*/
+void pkgAcquire::CommitTransaction(unsigned long TransactionID)
+{
+ if(_config->FindB("Debug::Acquire::Transaction", false) == true)
+ std::clog << "CommitTransaction: " << TransactionID << std::endl;
+
+ std::vector<Item*> Transaction;
+ for (ItemIterator I = Items.begin(); I != Items.end(); ++I)
+ if((*I)->TransactionID == TransactionID)
+ Transaction.push_back(*I);
+
+ // move new files into place *and* remove files that are not
+ // part of the transaction but are still on disk
+ for (std::vector<Item*>::iterator I = Transaction.begin();
+ I != Transaction.end(); ++I)
+ {
+ if((*I)->PartialFile != "")
+ {
+ if(_config->FindB("Debug::Acquire::Transaction", false) == true)
+ std::clog << "mv "
+ << (*I)->PartialFile << " -> "
+ << (*I)->DestFile << std::endl;
+ Rename((*I)->PartialFile, (*I)->DestFile);
+ chmod((*I)->DestFile.c_str(),0644);
+ } else {
+ if(_config->FindB("Debug::Acquire::Transaction", false) == true)
+ std::clog << "rm "
+ << (*I)->DestFile << std::endl;
+ unlink((*I)->DestFile.c_str());
+ }
+ // mark that this transaction is finished
+ (*I)->TransactionID = 0;