Merge remote-tracking branch 'mvo/feature/apt-show-nice' into debian/experimental...
[ntk/apt.git] / apt-private / private-list.cc
index ac72ce5..fbb66d2 100644 (file)
@@ -42,7 +42,7 @@
 #include <apti18n.h>
                                                                        /*}}}*/
 
-struct PackageSortAlphabetic
+struct PackageSortAlphabetic                                           /*{{{*/
 {
    bool operator () (const pkgCache::PkgIterator &p_lhs, 
                      const pkgCache::PkgIterator &p_rhs)
@@ -52,20 +52,28 @@ struct PackageSortAlphabetic
        return (l_name < r_name);
     }
 };
-
-class PackageNameMatcher : public Matcher
+                                                                       /*}}}*/
+class PackageNameMatcher : public Matcher                              /*{{{*/
 {
+#ifdef PACKAGE_MATCHER_ABI_COMPAT
+#define PackageMatcher PackageNameMatchesFnmatch
+#endif
   public:
    PackageNameMatcher(const char **patterns)
    {
       for(int i=0; patterns[i] != NULL; i++)
       {
          std::string pattern = patterns[i];
+#ifdef PACKAGE_MATCHER_ABI_COMPAT
+            APT::CacheFilter::PackageNameMatchesFnmatch *cachefilter = NULL;
+            cachefilter = new APT::CacheFilter::PackageNameMatchesFnmatch(pattern);
+#else
          APT::CacheFilter::PackageMatcher *cachefilter = NULL;
-         if(_config->FindB("APT::Cmd::UseRegexp", false) == true)
+         if(_config->FindB("APT::Cmd::Use-Regexp", false) == true)
             cachefilter = new APT::CacheFilter::PackageNameMatchesRegEx(pattern);
          else
             cachefilter = new APT::CacheFilter::PackageNameMatchesFnmatch(pattern);
+#endif
          filters.push_back(cachefilter);
       }
    }
@@ -88,18 +96,22 @@ class PackageNameMatcher : public Matcher
 private:
    std::vector<APT::CacheFilter::PackageMatcher*> filters;   
    std::vector<APT::CacheFilter::PackageMatcher*>::const_iterator J;
+   #undef PackageMatcher
 };
-
-
-void ListAllVersions(pkgCacheFile &CacheFile, pkgRecords &records, 
+                                                                       /*}}}*/
+void ListAllVersions(pkgCacheFile &CacheFile, pkgRecords &records,     /*{{{*/
                      pkgCache::PkgIterator P,    
-                     std::ostream &outs)
+                     std::ostream &outs,
+                     bool include_summary=true)
 {
    for (pkgCache::VerIterator Ver = P.VersionList();
         Ver.end() == false; Ver++) 
-      ListSingleVersion(CacheFile, records, Ver, outs);
+   {
+      ListSingleVersion(CacheFile, records, Ver, outs, include_summary);
+      outs << "\n";
+   }
 }
-
+                                                                       /*}}}*/
 // list - list package based on criteria                               /*{{{*/
 // ---------------------------------------------------------------------
 bool List(CommandLine &Cmd)
@@ -124,9 +136,11 @@ bool List(CommandLine &Cmd)
    std::map<std::string, std::string> output_map;
    std::map<std::string, std::string>::const_iterator K;
 
+   bool includeSummary = _config->FindB("APT::Cmd::List-Include-Summary");
+
    PackageNameMatcher matcher(patterns);
    LocalitySortedVersionSet bag;
-   OpTextProgress progress;
+   OpTextProgress progress(*_config);
    progress.OverallProgress(0,
                             Cache->Head().PackageCount, 
                             Cache->Head().PackageCount,
@@ -135,13 +149,13 @@ bool List(CommandLine &Cmd)
    for (LocalitySortedVersionSet::iterator V = bag.begin(); V != bag.end(); V++)
    {
       std::stringstream outs;
-      if(_config->FindB("APT::Cmd::AllVersions", false) == true)
+      if(_config->FindB("APT::Cmd::All-Versions", false) == true)
       {
-         ListAllVersions(CacheFile, records, V.ParentPkg(), outs);
+         ListAllVersions(CacheFile, records, V.ParentPkg(), outs, includeSummary);
          output_map.insert(std::make_pair<std::string, std::string>(
             V.ParentPkg().Name(), outs.str()));
       } else {
-         ListSingleVersion(CacheFile, records, V, outs);
+         ListSingleVersion(CacheFile, records, V, outs, includeSummary);
          output_map.insert(std::make_pair<std::string, std::string>(
                            V.ParentPkg().Name(), outs.str()));
       }