Просмотр исходного кода

Checked the size of partial files #33705
Author: jgg
Date: 1999-03-27 03:02:38 GMT
Checked the size of partial files #33705

Arch Librarian лет назад: 22
Родитель
Сommit
6b1ff003a4
5 измененных файлов с 36 добавлено и 11 удалено
  1. 16 6
      apt-pkg/acquire-item.cc
  2. 2 1
      apt-pkg/acquire-item.h
  3. 13 1
      apt-pkg/acquire.cc
  4. 2 1
      apt-pkg/acquire.h
  5. 3 2
      cmdline/apt-get.cc

+ 16 - 6
apt-pkg/acquire-item.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
-// $Id: acquire-item.cc,v 1.25 1999/02/27 22:29:11 jgg Exp $
+// $Id: acquire-item.cc,v 1.26 1999/03/27 03:02:38 jgg Exp $
 /* ######################################################################
 
    Acquire Item - Item to acquire
@@ -32,8 +32,8 @@
 // ---------------------------------------------------------------------
 /* */
 pkgAcquire::Item::Item(pkgAcquire *Owner) : Owner(Owner), FileSize(0),
-                       Mode(0), ID(0), Complete(false), Local(false), 
-                       QueueCounter(0)
+                       PartialSize(0), Mode(0), ID(0), Complete(false), 
+                       Local(false), QueueCounter(0)
 {
    Owner->Add(this);
    Status = StatIdle;
@@ -425,8 +425,8 @@ bool pkgAcqArchive::QueueNext()
 	    return true;
 	 }
 	 
-	 /* Hmm, we have a file and its size does not match, this shouldnt
-	    happen.. */
+	 /* Hmm, we have a file and its size does not match, this means it is
+	    an old style mismatched arch */
 	 unlink(FinalFile.c_str());
       }
 
@@ -450,7 +450,17 @@ bool pkgAcqArchive::QueueNext()
       }
 
       DestFile = _config->FindDir("Dir::Cache::Archives") + "partial/" + flNotDir(StoreFilename);
-
+      
+      // Check the destination file
+      if (stat(DestFile.c_str(),&Buf) == 0)
+      {
+	 // Hmm, the partial file is too big, erase it
+	 if ((unsigned)Buf.st_size > Version->Size)
+	    unlink(DestFile.c_str());
+	 else
+	    PartialSize = Buf.st_size;
+      }
+      
       // Create the item
       Desc.URI = Location->ArchiveURI(PkgFile);
       Desc.Description = Location->ArchiveInfo(Version);

+ 2 - 1
apt-pkg/acquire-item.h

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
-// $Id: acquire-item.h,v 1.16 1999/02/01 02:22:11 jgg Exp $
+// $Id: acquire-item.h,v 1.17 1999/03/27 03:02:38 jgg Exp $
 /* ######################################################################
 
    Acquire Item - Item to acquire
@@ -48,6 +48,7 @@ class pkgAcquire::Item
    enum {StatIdle, StatFetching, StatDone, StatError} Status;
    string ErrorText;
    unsigned long FileSize;
+   unsigned long PartialSize;   
    char *Mode;
    unsigned long ID;
    bool Complete;

+ 13 - 1
apt-pkg/acquire.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
-// $Id: acquire.cc,v 1.30 1999/03/16 07:28:45 jgg Exp $
+// $Id: acquire.cc,v 1.31 1999/03/27 03:02:38 jgg Exp $
 /* ######################################################################
 
    Acquire - File Acquiration
@@ -420,6 +420,18 @@ unsigned long pkgAcquire::FetchNeeded()
    return Total;
 }
 									/*}}}*/
+// Acquire::PartialPresent - Number of partial bytes we already have	/*{{{*/
+// ---------------------------------------------------------------------
+/* This is the number of bytes that is not local */
+unsigned long pkgAcquire::PartialPresent()
+{
+   unsigned long Total = 0;
+   for (pkgAcquire::Item **I = ItemsBegin(); I != ItemsEnd(); I++)
+      if ((*I)->Local == false)
+	 Total += (*I)->PartialSize;
+   return Total;
+}
+									/*}}}*/
 // pkgAcquire::UriBegin - Start iterator for the uri list		/*{{{*/
 // ---------------------------------------------------------------------
 /* */

+ 2 - 1
apt-pkg/acquire.h

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
-// $Id: acquire.h,v 1.19 1999/01/30 06:07:24 jgg Exp $
+// $Id: acquire.h,v 1.20 1999/03/27 03:02:39 jgg Exp $
 /* ######################################################################
 
    Acquire - File Acquiration
@@ -110,6 +110,7 @@ class pkgAcquire
    // Returns the size of the total download set
    unsigned long TotalNeeded();
    unsigned long FetchNeeded();
+   unsigned long PartialPresent();
    
    pkgAcquire(pkgAcquireStatus *Log = 0);
    ~pkgAcquire();

+ 3 - 2
cmdline/apt-get.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
-// $Id: apt-get.cc,v 1.46 1999/03/27 01:30:38 jgg Exp $
+// $Id: apt-get.cc,v 1.47 1999/03/27 03:02:39 jgg Exp $
 /* ######################################################################
    
    apt-get - Cover for dpkg
@@ -543,6 +543,7 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true,bool Saftey =
 
    // Display statistics
    unsigned long FetchBytes = Fetcher.FetchNeeded();
+   unsigned long FetchPBytes = Fetcher.PartialPresent();
    unsigned long DebBytes = Fetcher.TotalNeeded();
    if (DebBytes != Cache->DebSize())
    {
@@ -556,7 +557,7 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true,bool Saftey =
    if (statfs(OutputDir.c_str(),&Buf) != 0)
       return _error->Errno("statfs","Couldn't determine free space in %s",
 			   OutputDir.c_str());
-   if (unsigned(Buf.f_bfree) < FetchBytes/Buf.f_bsize)
+   if (unsigned(Buf.f_bfree) < (FetchBytes - FetchPBytes)/Buf.f_bsize)
       return _error->Error("Sorry, you don't have enough free space in %s",
 			   OutputDir.c_str());