浏览代码

Fixed up dpkginit and acquire stuff..
Author: jgg
Date: 1999-07-30 05:36:52 GMT
Fixed up dpkginit and acquire stuff..

Arch Librarian 22 年之前
父节点
当前提交
18ef0a7884
共有 4 个文件被更改,包括 31 次插入9 次删除
  1. 19 5
      apt-pkg/acquire-worker.cc
  2. 5 1
      apt-pkg/acquire.cc
  3. 2 2
      apt-pkg/deb/dpkginit.cc
  4. 5 1
      methods/gzip.cc

+ 19 - 5
apt-pkg/acquire-worker.cc

@@ -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.24 1999/07/30 05:36:52 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();   
 }
@@ -244,8 +248,14 @@ bool pkgAcquire::Worker::RunMessages()
 	    pkgAcquire::Item *Owner = Itm->Owner;
 	    pkgAcquire::ItemDesc Desc = *Itm;
 	    OwnerQ->ItemDone(Itm);
-	    Owner->Done(Message,atoi(LookupTag(Message,"Size","0").c_str()),
-					  LookupTag(Message,"MD5-Hash"));
+	    Pulse();
+	    if (TotalSize != 0 && 
+		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,CurrentSize,
+			LookupTag(Message,"MD5-Hash"));
 	    ItemDone();
 	    
 	    // Log that we are done
@@ -261,7 +271,7 @@ bool pkgAcquire::Worker::RunMessages()
 	       }	       
 	       else
 		  Log->Done(Desc);
-	    }	    
+	    }
 	    break;
 	 }	 
 	 
@@ -495,6 +505,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		/*{{{*/

+ 5 - 1
apt-pkg/acquire.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
-// $Id: acquire.cc,v 1.37 1999/07/03 03:10:35 jgg Exp $
+// $Id: acquire.cc,v 1.38 1999/07/30 05:36:52 jgg Exp $
 /* ######################################################################
 
    Acquire - File Acquiration
@@ -740,6 +740,10 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner)
       TotalBytes = 1;
    if (Unknown == Count)
       TotalBytes = Unknown;
+
+   // Wha?! Is not supposed to happen.
+   if (CurrentBytes > TotalBytes)
+      CurrentBytes = TotalBytes;
    
    // Compute the CPS
    struct timeval NewTime;

+ 2 - 2
apt-pkg/deb/dpkginit.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
-// $Id: dpkginit.cc,v 1.3 1999/07/26 17:46:08 jgg Exp $
+// $Id: dpkginit.cc,v 1.4 1999/07/30 05:36:52 jgg Exp $
 /* ######################################################################
 
    DPKG init - Initialize the dpkg stuff
@@ -62,7 +62,7 @@ bool pkgDpkgLock::GetLock(bool WithUpdates)
 			   "are you root?");
 
    // See if we need to abort with a dirty journal
-   if (WithUpdates == true && CheckUpdates() == false)
+   if (WithUpdates == true && CheckUpdates() == true)
    {
       Close();
       return _error->Error("dpkg was interrupted, you must manually "

+ 5 - 1
methods/gzip.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
-// $Id: gzip.cc,v 1.7 1999/01/27 02:48:53 jgg Exp $
+// $Id: gzip.cc,v 1.8 1999/07/30 05:37:00 jgg Exp $
 /* ######################################################################
 
    GZip method - Take a file URI in and decompress it into the target 
@@ -99,8 +99,12 @@ bool GzipMethod::Fetch(FetchItem *Itm)
    if (utime(Itm->DestFile.c_str(),&TimeBuf) != 0)
       return _error->Errno("utime","Failed to set modification time");
 
+   if (stat(Itm->DestFile.c_str(),&Buf) != 0)
+      return _error->Errno("stat","Failed to stat");
+   
    // Return a Done response
    Res.LastModified = Buf.st_mtime;
+   Res.Size = Buf.st_size;
    URIDone(Res);
    
    return true;