]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/tagfile.cc
Config class and source list
[apt.git] / apt-pkg / tagfile.cc
index 106b0febeb29ddd5a9a7d9b840ccc22e1483b502..aaef3da8b329d493f15eca8e5df03a3f6f3be959 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: tagfile.cc,v 1.1 1998/07/02 02:58:13 jgg Exp $
+// $Id: tagfile.cc,v 1.6 1998/07/09 05:12:32 jgg Exp $
 /* ######################################################################
 
    Fast scanner for RFC-822 type header information
    ##################################################################### */
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
+#ifdef __GNUG__
+#pragma implementation "pkglib/tagfile.h"
+#endif
+
 #include <pkglib/tagfile.h>
 #include <pkglib/error.h>
+#include <pkglib/init.h>
 
 #include <string>
 #include <stdio.h>
@@ -26,6 +31,7 @@ pkgTagFile::pkgTagFile(File &Fd) : Fd(Fd)
    Buffer = new char[64*1024];
    Start = End = Buffer + 64*1024;
    Left = Fd.Size();
+   iOffset = 0;
    Fill();
 }
                                                                        /*}}}*/
@@ -42,7 +48,9 @@ bool pkgTagFile::Step(pkgTagSection &Tag)
       if (Tag.Scan(Start,End - Start) == false)
         return _error->Error("Unable to parse package file");
    }   
-   Start += Tag.Length();
+   Start += Tag.size();
+   iOffset += Tag.size();
+   
    return true;
 }
                                                                        /*}}}*/
@@ -147,18 +155,57 @@ bool pkgTagSection::Find(const char *Tag,const char *&Start,
                                                                        /*}}}*/
 
 #include <pkglib/pkgcachegen.h>
+#include <pkglib/deblistparser.h>
 
 int main(int argc,char *argv[])
 {
+   pkglibInitialize(*_config);
+   cout << _config->Find("APT::arch") << endl;
+   cout << _config->FindDir("DIR::Etc::sourcelist") << endl;
+   
    {
-      File F(argv[1],File::ReadOnly);
-      pkgTagFile Test(F);
       File CacheF("./cache",File::WriteEmpty);
       DynamicMMap Map(CacheF,MMap::Public);
       pkgCacheGenerator Gen(Map);
-      Gen.SelectFile("tet");
-   }
 
+      for (int I = 1; I != argc; I++)
+      {
+        cout << "Merging in " << argv[I] << endl;
+        File F(argv[I],File::ReadOnly);
+        Gen.SelectFile(argv[I]);
+        debListParser Parser(F);
+        Gen.MergeList(Parser);
+      }      
+   }
+/*
+   {
+      File CacheF("./cache",File::WriteExists);
+      MMap Map(CacheF,MMap::Public | MMap::ReadOnly);
+      pkgCache Cache(Map);
+      for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
+      {
+        cout << "Package: " << I.Name() << endl;
+        for (pkgCache::VerIterator V = I.VersionList(); V.end() == false; V++)
+        {
+           cout << "Version: " << V.VerStr() << endl;
+           cout << "Size: " << V->Size << endl;
+           cout << "Installed-Size: " << V->InstalledSize << endl;
+           cout << "Section: " << V.Section() << endl;
+           cout << "Priority: " << Cache.Priority(V->Priority) << endl;
+           
+           pkgCache::PrvIterator P = V.ProvidesList();
+           if (P.end() == false)
+           {
+              cout << "Provides: ";
+              for (; P.end() == false; P++)
+                 cout << P.Name() << ", ";
+              cout << endl;
+           }       
+        }
+        cout << endl;
+      }
+   }
+*/   
 #if 0 
    pkgTagSection I;
    while (Test.Step(I) == true)