]> git.saurik.com Git - apt.git/commitdiff
enhance the Valid-Until code a bit by using the correct RFC1123StrToTime
authorDavid Kalnischkies <kalnischkies@gmail.com>
Tue, 8 Jun 2010 20:55:42 +0000 (22:55 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Tue, 8 Jun 2010 20:55:42 +0000 (22:55 +0200)
method and allow for better translations of the error messages

apt-pkg/acquire-item.cc
apt-pkg/indexrecords.cc

index 4a846804e53231be89a4ef8e16de90010de91c12..ac84c2e5e595db08a817b20703a5f8bb104a8d6e 100644 (file)
@@ -1178,13 +1178,15 @@ bool pkgAcqMetaIndex::VerifyVendor(string Message)                      /*{{{*/
       Transformed = "";
    }
 
-   if (_config->FindB("Acquire::Check-Valid-Until", true)) {
-      if (MetaIndexParser->GetValidUntil() > 0 &&
-          time(NULL) > MetaIndexParser->GetValidUntil()) {
-        return _error->Error(_("Release file expired, ignoring %s (valid until %s)"),
-                             RealURI.c_str(), 
-                             TimeRFC1123(MetaIndexParser->GetValidUntil()).c_str());
-      }
+   if (_config->FindB("Acquire::Check-Valid-Until", true) == true &&
+       MetaIndexParser->GetValidUntil() > 0) {
+      time_t const invalid_since = time(NULL) - MetaIndexParser->GetValidUntil();
+      if (invalid_since > 0)
+        // TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+        // the time since then the file is invalid - formated in the same way as in
+        // the download progress display (e.g. 7d 3h 42min 1s)
+        return _error->Error(_("Release file expired, ignoring %s (invalid since %s)"),
+                             RealURI.c_str(), TimeToStr(invalid_since).c_str());
    }
 
    if (_config->FindB("Debug::pkgAcquire::Auth", false)) 
index 24ed02ba569040d0c287976850df136311112262..1312e6818faeaddc982cefd1bdd34bef0c9ba185 100644 (file)
@@ -91,30 +91,30 @@ bool indexRecords::Load(const string Filename)                              /*{{{*/
    }  
 
    string Label = Section.FindS("Label");
-   string StrDate = Section.FindS("Date"); 
+   string StrDate = Section.FindS("Date");
    string StrValidUntil = Section.FindS("Valid-Until");
 
    // if we have a Valid-Until header, use it
-   if (!StrValidUntil.empty())
+   if (StrValidUntil.empty() == false)
    {
       // set ValidUntil based on the information in the Release file
-      if(!StrToTime(StrValidUntil, ValidUntil))
+      if(RFC1123StrToTime(StrValidUntil.c_str(), ValidUntil) == false)
       {
-        ErrorText = _(("Invalid 'Valid-Until' entry in Release file " + Filename).c_str());
+        strprintf(ErrorText, _("Invalid 'Valid-Until' entry in Release file %s"), Filename.c_str());
         return false;
       }
    } else {
       // if we don't have a valid-until string, check if we have a default
-      if (!Label.empty())
+      int MaxAge = _config->FindI("APT::Acquire::Max-Default-Age", 0);
+      if (Label.empty() == true)
+        MaxAge = _config->FindI(string("APT::Acquire::Max-Default-Age::"+Label).c_str(), MaxAge);
+
+      if(MaxAge > 0 && RFC1123StrToTime(StrDate.c_str(), ValidUntil) == false)
       {
-        int MaxAge = _config->FindI(string("apt::acquire::max-default-age::"+Label).c_str(),0);
-        if(MaxAge > 0 && !StrToTime(StrDate, ValidUntil))
-        {
-           ErrorText = _(("Invalid 'Date' entry in Release file " + Filename).c_str());
-           return false;
-        }
-        ValidUntil += 24*60*60*MaxAge;      
+        strprintf(ErrorText, _("Invalid 'Date' entry in Release file %s"), Filename.c_str());
+        return false;
       }
+      ValidUntil += 24*60*60*MaxAge;
    }
 
    return true;