]> git.saurik.com Git - apt.git/blobdiff - apt-private/private-install.cc
avoid deb specific code in private-install
[apt.git] / apt-private / private-install.cc
index 40165af31161f1f6df529c8dcf50441fe4bf00ff..4a68bb9d167940e764bd21647659968432e3309b 100644 (file)
@@ -21,9 +21,6 @@
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/sourcelist.h>
 
-// FIXME: include of deb specific header
-#include <apt-pkg/debmetaindex.h>
-
 #include <errno.h>
 #include <stdlib.h>
 #include <string.h>
@@ -33,6 +30,7 @@
 #include <iostream>
 #include <set>
 #include <vector>
+#include <map>
 
 #include <apt-private/acqprogress.h>
 #include <apt-private/private-install.h>
@@ -678,10 +676,19 @@ bool DoInstall(CommandLine &CmdL)
    {
       if(FileExists(*I))
       {
-         // FIMXE: direct usage of .deb specific stuff
-         metaIndex *mi = new debDebFileMetaIndex(*I);
-         pkgSourceList *sources = Cache.GetSourceList();
-         sources->Add(mi);
+         // FIXME: make this more elegant
+         std::string TypeStr = flExtension(*I) + "-file";
+         pkgSourceList::Type *Type = pkgSourceList::Type::GetType(TypeStr.c_str());
+         if(Type != 0)
+         {
+            std::vector<metaIndex *> List;
+            std::map<std::string, std::string> Options;
+            if(Type->CreateItem(List, *I, "", "", Options))
+            {
+               pkgSourceList *sources = Cache.GetSourceList();
+               sources->Add(List[0]);
+            }
+         }
       }
    }