]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/acquire-item.cc
Hide hit for local uris
[apt.git] / apt-pkg / acquire-item.cc
index db334de98fd38f8ebc570301d879ea0269ab9ee4..59301784e04b3ce79f0a56a1c1926bef8a0b42c8 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: acquire-item.cc,v 1.14 1998/11/29 01:24:14 jgg Exp $
+// $Id: acquire-item.cc,v 1.17 1998/12/11 06:32:33 jgg Exp $
 /* ######################################################################
 
    Acquire Item - Item to acquire
 /* ######################################################################
 
    Acquire Item - Item to acquire
@@ -9,7 +9,7 @@
    cannot create an item that fetches two uri's to two files at the same 
    time. The pkgAcqIndex class creates a second class upon instantiation
    to fetch the other index files because of this.
    cannot create an item that fetches two uri's to two files at the same 
    time. The pkgAcqIndex class creates a second class upon instantiation
    to fetch the other index files because of this.
-   
+
    ##################################################################### */
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
    ##################################################################### */
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
@@ -54,6 +54,7 @@ pkgAcquire::Item::~Item()
 void pkgAcquire::Item::Failed(string Message)
 {
    Status = StatIdle;
 void pkgAcquire::Item::Failed(string Message)
 {
    Status = StatIdle;
+   ErrorText = LookupTag(Message,"Message");
    if (QueueCounter <= 1)
    {
       /* This indicates that the file is not available right now but might
    if (QueueCounter <= 1)
    {
       /* This indicates that the file is not available right now but might
@@ -66,7 +67,6 @@ void pkgAcquire::Item::Failed(string Message)
         return;
       }
       
         return;
       }
       
-      ErrorText = LookupTag(Message,"Message");
       Status = StatError;
       Owner->Dequeue(this);
    }   
       Status = StatError;
       Owner->Dequeue(this);
    }   
@@ -336,10 +336,20 @@ pkgAcqArchive::pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources,
                             pkgRecords *Recs,pkgCache::VerIterator const &Version,
                             string &StoreFilename) :
                Item(Owner), Version(Version), Sources(Sources), Recs(Recs), 
                             pkgRecords *Recs,pkgCache::VerIterator const &Version,
                             string &StoreFilename) :
                Item(Owner), Version(Version), Sources(Sources), Recs(Recs), 
-               StoreFilename(StoreFilename)
+               StoreFilename(StoreFilename), Vf(Version.FileList())
 {
    // Select a source
 {
    // Select a source
-   pkgCache::VerFileIterator Vf = Version.FileList();
+   if (QueueNext() == false && _error->PendingError() == false)
+      _error->Error("I wasn't able to locate file for the %s package. "
+                   "This might mean you need to manually fix this package.",
+                   Version.ParentPkg().Name());
+}
+                                                                       /*}}}*/
+// AcqArchive::QueueNext - Queue the next file source                  /*{{{*/
+// ---------------------------------------------------------------------
+/* This queues the next available file version for download. */
+bool pkgAcqArchive::QueueNext()
+{
    for (; Vf.end() == false; Vf++)
    {
       // Ignore not source sources
    for (; Vf.end() == false; Vf++)
    {
       // Ignore not source sources
@@ -359,17 +369,14 @@ pkgAcqArchive::pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources,
       // Grab the text package record
       pkgRecords::Parser &Parse = Recs->Lookup(Vf);
       if (_error->PendingError() == true)
       // Grab the text package record
       pkgRecords::Parser &Parse = Recs->Lookup(Vf);
       if (_error->PendingError() == true)
-        return;
+        return false;
       
       PkgFile = Parse.FileName();
       MD5 = Parse.MD5Hash();
       if (PkgFile.empty() == true)
       
       PkgFile = Parse.FileName();
       MD5 = Parse.MD5Hash();
       if (PkgFile.empty() == true)
-      {
-        _error->Error("Unable to locate a file name for package %s, "
-                      "perhaps the package files are corrupted.",
-                      Version.ParentPkg().Name());
-        return;
-      }
+        return _error->Error("The package index files are corrupted. No Filename: "
+                             "field for package %s."
+                             ,Version.ParentPkg().Name());
 
       // See if we already have the file.
       FileSize = Version->Size;
 
       // See if we already have the file.
       FileSize = Version->Size;
@@ -384,7 +391,7 @@ pkgAcqArchive::pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources,
            Local = true;
            Status = StatDone;
            StoreFilename = DestFile = FinalFile;
            Local = true;
            Status = StatDone;
            StoreFilename = DestFile = FinalFile;
-           return;
+           return true;
         }
         
         /* Hmm, we have a file and its size does not match, this shouldnt
         }
         
         /* Hmm, we have a file and its size does not match, this shouldnt
@@ -400,14 +407,12 @@ pkgAcqArchive::pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources,
       Desc.Owner = this;
       Desc.ShortDesc = Version.ParentPkg().Name();
       QueueURI(Desc);
       Desc.Owner = this;
       Desc.ShortDesc = Version.ParentPkg().Name();
       QueueURI(Desc);
-      
-      return;
+
+      Vf++;
+      return true;
    }
    }
-   
-  _error->Error("I wasn't able to locate file for the %s package. "
-               "This probably means you need to rerun update.",
-               Version.ParentPkg().Name());
-}
+   return false;
+}   
                                                                        /*}}}*/
 // AcqArchive::Done - Finished fetching                                        /*{{{*/
 // ---------------------------------------------------------------------
                                                                        /*}}}*/
 // AcqArchive::Done - Finished fetching                                        /*{{{*/
 // ---------------------------------------------------------------------
@@ -469,4 +474,13 @@ string pkgAcqArchive::Describe()
    return Desc.URI;
 }
                                                                        /*}}}*/
    return Desc.URI;
 }
                                                                        /*}}}*/
-
+// AcqArchive::Failed - Failure handler                                        /*{{{*/
+// ---------------------------------------------------------------------
+/* Here we try other sources */
+void pkgAcqArchive::Failed(string Message)
+{
+   ErrorText = LookupTag(Message,"Message");
+   if (QueueNext() == false)
+      Item::Failed(Message);
+}
+                                                                       /*}}}*/