add APT::Cache::ShowOnlyFirstOr option to print only the first
authorDavid Kalnischkies <kalnischkies@gmail.com>
Mon, 26 Jul 2010 07:22:53 +0000 (09:22 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Mon, 26 Jul 2010 07:22:53 +0000 (09:22 +0200)
alternative in the apt-cache (r)depends commands

cmdline/apt-cache.cc

index 1a1ddcb..88bf3a0 100644 (file)
@@ -580,6 +580,7 @@ bool Depends(CommandLine &CmdL)
    bool const ShowConflicts = _config->FindB("APT::Cache::ShowConflicts", Important == false);
    bool const ShowBreaks = _config->FindB("APT::Cache::ShowBreaks", Important == false);
    bool const ShowEnhances = _config->FindB("APT::Cache::ShowEnhances", Important == false);
+   bool const ShowOnlyFirstOr = _config->FindB("APT::Cache::ShowOnlyFirstOr", false);
    bool DidSomething;
    do
    {
@@ -618,7 +619,7 @@ bool Depends(CommandLine &CmdL)
            if((Installed && Trg->CurrentVer != 0) || !Installed)
              {
 
-               if ((D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or)
+               if ((D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or && ShowOnlyFirstOr == false)
                  cout << " |";
                else
                  cout << "  ";
@@ -650,6 +651,9 @@ bool Depends(CommandLine &CmdL)
               if (Recurse == true)
                  Colours[D.ParentPkg()->ID]++;
            }
+
+           if (ShowOnlyFirstOr == true)
+              while ((D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) ++D;
         }
       }      
    }   
@@ -687,6 +691,7 @@ bool RDepends(CommandLine &CmdL)
    bool const ShowConflicts = _config->FindB("APT::Cache::ShowConflicts", Important == false);
    bool const ShowBreaks = _config->FindB("APT::Cache::ShowBreaks", Important == false);
    bool const ShowEnhances = _config->FindB("APT::Cache::ShowEnhances", Important == false);
+   bool const ShowOnlyFirstOr = _config->FindB("APT::Cache::ShowOnlyFirstOr", false);
    bool DidSomething;
    do
    {
@@ -727,7 +732,7 @@ bool RDepends(CommandLine &CmdL)
            if((Installed && Trg->CurrentVer != 0) || !Installed)
              {
 
-               if ((D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or)
+               if ((D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or && ShowOnlyFirstOr == false)
                  cout << " |";
                else
                  cout << "  ";
@@ -758,6 +763,9 @@ bool RDepends(CommandLine &CmdL)
               if (Recurse == true)
                  Colours[D.ParentPkg()->ID]++;
            }
+
+           if (ShowOnlyFirstOr == true)
+              while ((D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) ++D;
         }
       }      
    }