]> git.saurik.com Git - apt.git/blobdiff - test/scratch.cc
handle multiple --{tar,diff,dsc}-only options correctly
[apt.git] / test / scratch.cc
index 53681db16e030e668f758ea72df999defcff1d60..d638c70972e454bf930b243a9628c77d84209d17 100644 (file)
-#include <apt-pkg/acquire-item.h>
-#include <apt-pkg/init.h>
+#include <apt-pkg/dpkgdb.h>
+#include <apt-pkg/debfile.h>
 #include <apt-pkg/error.h>
-#include <signal.h>
-#include <strutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/extract.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/fileutl.h>
+
+using namespace std;
 
 int main(int argc,char *argv[])
 {
-   signal(SIGPIPE,SIG_IGN);
+   pkgInitConfig(*_config);
+   pkgInitSystem(*_config,_system);
 
-/*   URI Foo(argv[1]);
-   cout << Foo.Access << '\'' << endl;
-   cout << Foo.Host << '\'' << endl;
-   cout << Foo.Path << '\'' << endl;
-   cout << Foo.User << '\'' << endl;
-   cout << Foo.Password << '\'' << endl;
-   cout << Foo.Port << endl;
+//   cout << flNoLink(argv[1]) << endl;
+   
+//   #if 0
+/*   DynamicMMap *FileMap = new DynamicMMap(MMap::Public);
+   pkgFLCache *FList = new pkgFLCache(*FileMap);
    
-   return 0;*/
+   char *Name = "/tmp/test";
+   pkgFLCache::PkgIterator Pkg(*FList,0);
+   pkgFLCache::NodeIterator Node = FList->GetNode(Name,Name+strlen(Name),Pkg.Offset(),true,false);
+   cout << (pkgFLCache::Node *)Node << endl;
+   Node = FList->GetNode(Name,Name+strlen(Name),Pkg.Offset(),true,false);
+   cout << (pkgFLCache::Node *)Node << endl;
+*/
+//   #if 0
+   _config->Set("Dir::State::status","/tmp/testing/status");
 
-   pkgInitialize(*_config);
+   debDpkgDB Db;
    
-   pkgSourceList List;
-   pkgAcquire Fetcher;
-   List.ReadMainList();
+   {
+      OpTextProgress Prog;
+      
+      if (Db.ReadyPkgCache(Prog) == false)
+        cerr << "Error!" << endl;
+      Prog.Done();
+      
+      if (Db.ReadyFileList(Prog) == false)
+        cerr << "Error!" << endl;
+   }
    
-   pkgSourceList::const_iterator I;
-   for (I = List.begin(); I != List.end(); I++)
+   if (_error->PendingError() == true)
    {
-      new pkgAcqIndex(&Fetcher,I);
-      if (_error->PendingError() == true)
-        break;
+      _error->DumpErrors();
+      return 0;
    }
-
-   Fetcher.Run();
    
+/*   Db.GetFLCache().BeginDiverLoad();
+   pkgFLCache::PkgIterator Pkg(Db.GetFLCache(),0);
+   if (Db.GetFLCache().AddDiversion(Pkg,"/usr/include/linux/kerneld.h","/usr/bin/nslookup") == false)
+      cerr << "Error!" << endl;
+
+   const char *Tmp = "/usr/include/linux/kerneld.h";
+   pkgFLCache::NodeIterator Nde = Db.GetFLCache().GetNode(Tmp,Tmp+strlen(Tmp),0,false,false);
+   map_ptrloc Loc = Nde->File;
+      
+   for (; Nde.end() == false && Nde->File == Loc; Nde++)
+      cout << Nde->Flags << ',' << Nde->Pointer << ',' << Nde.File() << endl;
+   Db.GetFLCache().FinishDiverLoad();*/
+
+/*   unsigned int I = 0;
+   pkgFLCache &Fl = Db.GetFLCache();
+   while (I < Fl.HeaderP->HashSize)
+   {
+      cout << I << endl;
+      pkgFLCache::NodeIterator Node(Fl,Fl.NodeP + Fl.HeaderP->FileHash + I++);
+      if (Node->Pointer == 0)
+        continue;
+      for (; Node.end() == false; Node++)
+      {
+        cout << Node.DirN() << '/' << Node.File();
+        if (Node->Flags == pkgFLCache::Node::Diversion)
+           cout << " (div)";
+        if (Node->Flags == pkgFLCache::Node::ConfFile)
+           cout << " (conf)";
+        cout << endl;
+      }
+   }*/
+
+   for (int I = 1; I < argc; I++)
+   {
+      FileFd F(argv[I],FileFd::ReadOnly);
+      debDebFile Deb(F);
+      
+      if (Deb.ExtractControl(Db) == false)
+        cerr << "Error!" << endl;
+      cout << argv[I] << endl;
+      
+      pkgCache::VerIterator Ver = Deb.MergeControl(Db);
+      if (Ver.end() == true)
+        cerr << "Failed" << endl;
+      else
+        cout << Ver.ParentPkg().Name() << ' ' << Ver.VerStr() << endl;
+      
+      pkgExtract Extract(Db.GetFLCache(),Ver);
+      Deb.ExtractArchive(Extract);
+   }
+//   #endif
+//#endif      
    _error->DumpErrors();
 }