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

move pkgSourceList::AddMetaIndex() into a private subclass until we decide about a good API

Michael Vogt лет назад: 12
Родитель
Сommit
aaf677da5b
3 измененных файлов с 35 добавлено и 7 удалено
  1. 9 6
      apt-pkg/sourcelist.h
  2. 23 0
      apt-private/private-cachefile.h
  3. 3 1
      apt-private/private-install.cc

+ 9 - 6
apt-pkg/sourcelist.h

@@ -52,7 +52,15 @@ class pkgAcquire;
 class pkgIndexFile;
 class pkgIndexFile;
 class metaIndex;
 class metaIndex;
 
 
-class pkgSourceList
+class pkgSource
+{
+   protected:
+
+   std::vector<metaIndex *> SrcList;
+
+};
+
+class pkgSourceList : public pkgSource
 {
 {
    public:
    public:
    
    
@@ -116,11 +124,6 @@ class pkgSourceList
    // query last-modified time
    // query last-modified time
    time_t GetLastModifiedTime();
    time_t GetLastModifiedTime();
 
 
-   // Add custom metaIndex (e.g. local files)
-   void AddMetaIndex(metaIndex *mi) {
-      SrcList.push_back(mi);
-   }
-
    pkgSourceList();
    pkgSourceList();
    pkgSourceList(std::string File);
    pkgSourceList(std::string File);
    ~pkgSourceList();      
    ~pkgSourceList();      

+ 23 - 0
apt-private/private-cachefile.h

@@ -6,7 +6,20 @@
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/macros.h>
 #include <apt-pkg/macros.h>
+#include <apt-pkg/sourcelist.h>
+#include <apti18n.h>
 
 
+// FIXME: we need to find a way to export this 
+class APT_PUBLIC SourceList : public pkgSourceList
+{
+   
+ public:
+   // Add custom metaIndex (e.g. local files)
+   void AddMetaIndex(metaIndex *mi) {
+      SrcList.push_back(mi);
+   }
+
+};
 
 
 // class CacheFile - Cover class for some dependency cache functions	/*{{{*/
 // class CacheFile - Cover class for some dependency cache functions	/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
@@ -28,6 +41,16 @@ class APT_PUBLIC CacheFile : public pkgCacheFile
 	 return false;
 	 return false;
       return true;
       return true;
    }
    }
+   // FIXME: this can go once the "libapt-pkg" pkgSourceList has a way
+   //        to add custom metaIndexes (or custom local files or so)
+   bool BuildSourceList(OpProgress */*Progress*/ = NULL) {
+      if (SrcList != NULL)
+         return true;
+      SrcList = new SourceList();
+      if (SrcList->ReadMainList() == false)
+         return _error->Error(_("The list of sources could not be read."));
+      return true;
+   }
    bool Open(bool WithLock = true) 
    bool Open(bool WithLock = true) 
    {
    {
       OpTextProgress Prog(*_config);
       OpTextProgress Prog(*_config);

+ 3 - 1
apt-private/private-install.cc

@@ -685,7 +685,9 @@ bool DoInstall(CommandLine &CmdL)
             std::map<std::string, std::string> Options;
             std::map<std::string, std::string> Options;
             if(Type->CreateItem(List, *I, "", "", Options))
             if(Type->CreateItem(List, *I, "", "", Options))
             {
             {
-               pkgSourceList *sources = Cache.GetSourceList();
+               // we have our own CacheFile that gives us a SourceList
+               // with superpowerz
+               SourceList *sources = (SourceList*)Cache.GetSourceList();
                sources->AddMetaIndex(List[0]);
                sources->AddMetaIndex(List[0]);
             }
             }
          }
          }