Prechádzať zdrojové kódy

enhance the Valid-Until code a bit by using the correct RFC1123StrToTime
method and allow for better translations of the error messages

David Kalnischkies 16 rokov pred
rodič
commit
0323317c08
2 zmenil súbory, kde vykonal 21 pridanie a 19 odobranie
  1. 9 7
      apt-pkg/acquire-item.cc
  2. 12 12
      apt-pkg/indexrecords.cc

+ 9 - 7
apt-pkg/acquire-item.cc

@@ -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)) 

+ 12 - 12
apt-pkg/indexrecords.cc

@@ -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;