From: Otavio Salvador <otavio@debian.org>
Date: Fri, 13 May 2005 14:05:10 +0000 (+0000)
Subject: Add FindInCache method to skip the rebuild of cache every time.
X-Git-Tag: 0.7.24ubuntu1~245^2~22
X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/c51c6f08ab15d09e1585ab7e680b53f87d654d6b?ds=inline

Add FindInCache method to skip the rebuild of cache every time.
---

diff --git a/apt-pkg/deb/debindexfile.cc b/apt-pkg/deb/debindexfile.cc
index 4113137eb..b8435a6bc 100644
--- a/apt-pkg/deb/debindexfile.cc
+++ b/apt-pkg/deb/debindexfile.cc
@@ -453,7 +453,28 @@ bool debTranslationsIndex::Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const
    return true;
 }
 									/*}}}*/
-
+// TranslationsIndex::FindInCache - Find this index				/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgCache::PkgFileIterator debTranslationsIndex::FindInCache(pkgCache &Cache) const
+{
+   pkgCache::PkgFileIterator File = Cache.FileBegin();
+   if (this->UseTranslation()) 
+     for (; File.end() == false; File++)
+       {
+	 if (IndexFile(LanguageCode().c_str()) != File.FileName())
+	   continue;
+      
+	 struct stat St;
+	 if (stat(File.FileName(),&St) != 0)
+	   return pkgCache::PkgFileIterator(Cache);
+	 if ((unsigned)St.st_size != File->Size || St.st_mtime != File->mtime)
+	   return pkgCache::PkgFileIterator(Cache);
+	 return File;
+       }   
+   return File;
+}
+									/*}}}*/
 // StatusIndex::debStatusIndex - Constructor				/*{{{*/
 // ---------------------------------------------------------------------
 /* */
diff --git a/apt-pkg/deb/debindexfile.h b/apt-pkg/deb/debindexfile.h
index 7bd7ea4f3..6d423318e 100644
--- a/apt-pkg/deb/debindexfile.h
+++ b/apt-pkg/deb/debindexfile.h
@@ -99,6 +99,7 @@ class debTranslationsIndex : public pkgIndexFile
    virtual bool HasPackages() const {return true;};
    virtual unsigned long Size() const;
    virtual bool Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const;
+   virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const;
 
    debTranslationsIndex(string URI,string Dist,string Section);
 };