]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/acquire-worker.cc
Same bashism, different line.
[apt.git] / apt-pkg / acquire-worker.cc
index 6d70e79d8269febff21910c2bd785bba2e26df05..f6b14da3c4b19a6a943ad4677d1931e41fd22882 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: acquire-worker.cc,v 1.23 1999/07/26 17:46:07 jgg Exp $
+// $Id: acquire-worker.cc,v 1.28 1999/10/18 00:37:35 jgg Exp $
 /* ######################################################################
 
    Acquire Worker 
@@ -40,7 +40,9 @@ pkgAcquire::Worker::Worker(Queue *Q,MethodConfig *Cnf,
    Config = Cnf;
    Access = Cnf->Access;
    CurrentItem = 0;
-
+   TotalSize = 0;
+   CurrentSize = 0;
+   
    Construct();   
 }
                                                                        /*}}}*/
@@ -53,6 +55,8 @@ pkgAcquire::Worker::Worker(MethodConfig *Cnf)
    Config = Cnf;
    Access = Cnf->Access;
    CurrentItem = 0;
+   TotalSize = 0;
+   CurrentSize = 0;
    
    Construct();   
 }
@@ -82,7 +86,10 @@ pkgAcquire::Worker::~Worker()
    
    if (Process > 0)
    {
-      kill(Process,SIGINT);
+      /* Closing of stdin is the signal to exit and die when the process
+         indicates it needs cleanup */
+      if (Config->NeedsCleanup == false)
+        kill(Process,SIGINT);
       ExecWait(Process,Access.c_str(),true);
    }   
 }
@@ -244,8 +251,13 @@ bool pkgAcquire::Worker::RunMessages()
            pkgAcquire::Item *Owner = Itm->Owner;
            pkgAcquire::ItemDesc Desc = *Itm;
            OwnerQ->ItemDone(Itm);
+           if (TotalSize != 0 && 
+               (unsigned)atoi(LookupTag(Message,"Size","0").c_str()) != TotalSize)
+              _error->Warning("Bizzar Error - File size is not what the server reported %s %u",
+                              LookupTag(Message,"Size","0").c_str(),TotalSize);
+
            Owner->Done(Message,atoi(LookupTag(Message,"Size","0").c_str()),
-                                         LookupTag(Message,"MD5-Hash"));
+                       LookupTag(Message,"MD5-Hash"));
            ItemDone();
            
            // Log that we are done
@@ -261,7 +273,7 @@ bool pkgAcquire::Worker::RunMessages()
               }               
               else
                  Log->Done(Desc);
-           }       
+           }
            break;
         }       
         
@@ -314,6 +326,7 @@ bool pkgAcquire::Worker::Capabilities(string Message)
    Config->Pipeline = StringToBool(LookupTag(Message,"Pipeline"),false);
    Config->SendConfig = StringToBool(LookupTag(Message,"Send-Config"),false);
    Config->LocalOnly = StringToBool(LookupTag(Message,"Local-Only"),false);
+   Config->NeedsCleanup = StringToBool(LookupTag(Message,"Needs-Cleanup"),false);
 
    // Some debug text
    if (Debug == true)
@@ -495,6 +508,10 @@ void pkgAcquire::Worker::Pulse()
    if (stat(CurrentItem->Owner->DestFile.c_str(),&Buf) != 0)
       return;
    CurrentSize = Buf.st_size;
+   
+   // Hmm? Should not happen...
+   if (CurrentSize > TotalSize && TotalSize != 0)
+      TotalSize = CurrentSize;
 }
                                                                        /*}}}*/
 // Worker::ItemDone - Called when the current item is finished         /*{{{*/