]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/acquire.cc
mve MetaKey into pkgAcqBaseIndex
[apt.git] / apt-pkg / acquire.cc
index 2e2e39d51b0371adb4cfb54188b798c8e77e8b17..15af5d6bdb7fe7d743908a16109e4a040f1a8028 100644 (file)
@@ -185,11 +185,22 @@ void pkgAcquire::AbortTransaction(unsigned long TransactionID)
    {
       if(_config->FindB("Debug::Acquire::Transaction", false) == true)
          std::clog << "  Cancel: " << (*I)->DestFile << std::endl;
-      Dequeue(*I);
+      //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::StatDone &&
+            (*I)->Status != pkgAcquire::Item::StatIdle)
+            return true;
+
+   return false;
+}
 // Acquire::CommitTransaction - Commit a transaction                   /*{{{*/
 void pkgAcquire::CommitTransaction(unsigned long TransactionID)
 {
@@ -201,11 +212,12 @@ void pkgAcquire::CommitTransaction(unsigned long TransactionID)
       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 != "" && 
-         (*I)->Status == pkgAcquire::Item::StatDone)
+      if((*I)->PartialFile != "")
       {
          if(_config->FindB("Debug::Acquire::Transaction", false) == true)
             std::clog << "mv " 
@@ -213,7 +225,14 @@ void pkgAcquire::CommitTransaction(unsigned long TransactionID)
                       <<  (*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;
    }
 }
                                                                        /*}}}*/