]> git.saurik.com Git - apt.git/commitdiff
Merge remote-tracking branch 'mvo/feature/srcrec-enum2' into debian/sid
authorMichael Vogt <mvo@debian.org>
Tue, 10 Jun 2014 12:43:56 +0000 (14:43 +0200)
committerMichael Vogt <mvo@debian.org>
Tue, 10 Jun 2014 12:43:56 +0000 (14:43 +0200)
apt-pkg/srcrecords.cc
apt-pkg/srcrecords.h

index 775cf2e5f98dcc21a0eab761ed66d945ea7828cd..f4d034b85c165f86fb2f8b3e61bf6c809c4b7424 100644 (file)
@@ -81,6 +81,27 @@ bool pkgSrcRecords::Restart()
    return true;
 }
                                                                        /*}}}*/
+// SrcRecords::Next - Step to the next Source Record                   /*{{{*/
+// ---------------------------------------------------------------------
+/* Step to the next source package record */
+const pkgSrcRecords::Parser* pkgSrcRecords::Next()
+{
+   if (Current == Files.end())
+      return 0;
+
+   // Step to the next record, possibly switching files
+   while ((*Current)->Step() == false)
+   {
+      if (_error->PendingError() == true)
+         return 0;
+      ++Current;
+      if (Current == Files.end())
+         return 0;
+   }
+
+   return *Current;
+}
+                                                                       /*}}}*/
 // SrcRecords::Find - Find the first source package with the given name        /*{{{*/
 // ---------------------------------------------------------------------
 /* This searches on both source package names and output binary names and
@@ -88,21 +109,11 @@ bool pkgSrcRecords::Restart()
    function to be called multiple times to get successive entries */
 pkgSrcRecords::Parser *pkgSrcRecords::Find(const char *Package,bool const &SrcOnly)
 {
-   if (Current == Files.end())
-      return 0;
-   
    while (true)
    {
-      // Step to the next record, possibly switching files
-      while ((*Current)->Step() == false)
-      {
-        if (_error->PendingError() == true)
-           return 0;
-        ++Current;
-        if (Current == Files.end())
-           return 0;
-      }
-      
+      if(Next() == 0)
+         return 0;
+
       // IO error somehow
       if (_error->PendingError() == true)
         return 0;
index 9915debfe4a87e13093192e71db380ded84d7a45..82460d70f2a306b0ad6059ba883ed075664c1287 100644 (file)
@@ -95,8 +95,13 @@ class pkgSrcRecords
    // Reset the search
    bool Restart();
 
-   // Locate a package by name
-   Parser *Find(const char *Package,bool const &SrcOnly = false);
+   // Step to the next SourcePackage and return pointer to the 
+   // next SourceRecord. The pointer is owned by libapt.
+   const Parser* Next();
+
+   // Locate a package by name and return pointer to the Parser.
+   // The pointer is owned by libapt.
+   Parser* Find(const char *Package,bool const &SrcOnly = false);
    
    pkgSrcRecords(pkgSourceList &List);
    virtual ~pkgSrcRecords();