]> git.saurik.com Git - apt.git/commitdiff
display the architecture of the package if it is not the default
authorDavid Kalnischkies <kalnischkies@gmail.com>
Thu, 11 Feb 2010 14:41:04 +0000 (15:41 +0100)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Thu, 11 Feb 2010 14:41:04 +0000 (15:41 +0100)
architecture in apt-get, display policy for all available architectures
and use GrpIterator in apt-cache pkgnames

cmdline/apt-cache.cc
cmdline/apt-get.cc

index 7d7f58a62b9dd4483e9478cd164844f599977093..cd806286c780033208164203bf3b44f72f0d9265 100644 (file)
@@ -1417,11 +1417,15 @@ bool ShowPackage(CommandLine &CmdL)
    
    for (const char **I = CmdL.FileList + 1; *I != 0; I++)
    {
+      // FIXME: Handle the case in which pkgname name:arch is not found
       pkgCache::PkgIterator Pkg = Cache.FindPkg(*I);
       if (Pkg.end() == true)
       {
-        _error->Warning(_("Unable to locate package %s"),*I);
-        continue;
+        Pkg = Cache.FindPkg(*I, "any");
+        if (Pkg.end() == true) {
+               _error->Warning(_("Unable to locate package %s"),*I);
+               continue;
+        }
       }
 
       ++found;
@@ -1457,16 +1461,17 @@ bool ShowPackage(CommandLine &CmdL)
 bool ShowPkgNames(CommandLine &CmdL)
 {
    pkgCache &Cache = *GCache;
-   pkgCache::PkgIterator I = Cache.PkgBegin();
-   bool All = _config->FindB("APT::Cache::AllNames","false");
-   
+   pkgCache::GrpIterator I = Cache.GrpBegin();
+   bool const All = _config->FindB("APT::Cache::AllNames","false");
+
    if (CmdL.FileList[1] != 0)
    {
       for (;I.end() != true; I++)
       {
-        if (All == false && I->VersionList == 0)
+        if (All == false && I->FirstPackage == 0)
+           continue;
+        if (I.FindPkg("any")->VersionList == 0)
            continue;
-        
         if (strncmp(I.Name(),CmdL.FileList[1],strlen(CmdL.FileList[1])) == 0)
            cout << I.Name() << endl;
       }
@@ -1477,7 +1482,9 @@ bool ShowPkgNames(CommandLine &CmdL)
    // Show all pkgs
    for (;I.end() != true; I++)
    {
-      if (All == false && I->VersionList == 0)
+      if (All == false && I->FirstPackage == 0)
+        continue;
+      if (I.FindPkg("any")->VersionList == 0)
         continue;
       cout << I.Name() << endl;
    }
@@ -1565,19 +1572,27 @@ bool Policy(CommandLine &CmdL)
       
       return true;
    }
-   
+
+   string const myArch = _config->Find("APT::Architecture");
+
    // Print out detailed information for each package
    for (const char **I = CmdL.FileList + 1; *I != 0; I++)
    {
-      pkgCache::PkgIterator Pkg = Cache.FindPkg(*I);
+      pkgCache::GrpIterator Grp = Cache.FindGrp(*I);
+      pkgCache::PkgIterator Pkg = Grp.FindPkg("any");
       if (Pkg.end() == true)
       {
         _error->Warning(_("Unable to locate package %s"),*I);
         continue;
       }
-      
-      cout << Pkg.Name() << ":" << endl;
-      
+
+      for (; Pkg.end() != true; Pkg = Grp.NextPkg(Pkg)) {
+
+      if (myArch == Pkg.Arch())
+        cout << Pkg.Name() << ":" << endl;
+      else
+        cout << Pkg.Name() << ": [" << Pkg.Arch() << "]" << endl;
+
       // Installed version
       cout << _("  Installed: ");
       if (Pkg->CurrentVer == 0)
@@ -1622,8 +1637,9 @@ bool Policy(CommandLine &CmdL)
               return _error->Error(_("Cache is out of sync, can't x-ref a package file"));
            printf(_("       %4i %s\n"),Plcy.GetPriority(VF.File()),
                   Indx->Describe(true).c_str());
-        }       
-      }      
+        }
+      }
+      }
    }
    
    return true;
index 7325bbf22c8fbff225cb946d5f1b88e23b652e8f..2597a6acb3e0d03fe4d68f91875c2a0cef6b19a4 100644 (file)
@@ -227,6 +227,17 @@ bool ShowList(ostream &out,string Title,string List,string VersionsList)
    return false;
 }
                                                                        /*}}}*/
+// ShowPkg - display a package name                                    /*{{{*/
+// ---------------------------------------------------------------------
+/* Displays the package name and maybe also the architecture
+   if it is not the main architecture */
+string ShowPkg(pkgCache::PkgIterator const Pkg) {
+       string p = Pkg.Name();
+       if (_config->Find("APT::Architecture") != Pkg.Arch())
+               p.append(":").append(Pkg.Arch());
+       return p;
+}
+                                                                       /*}}}*/
 // ShowBroken - Debugging aide                                         /*{{{*/
 // ---------------------------------------------------------------------
 /* This prints out the names of all the packages that are broken along
@@ -258,8 +269,8 @@ void ShowBroken(ostream &out,CacheFile &Cache,bool Now)
       }
       
       // Print out each package and the failed dependencies
-      out <<"  " <<  I.Name() << ":";
-      unsigned Indent = strlen(I.Name()) + 3;
+      out << " " << ShowPkg(I) << " :";
+      unsigned const Indent = ShowPkg(I).size() + 3;
       bool First = true;
       pkgCache::VerIterator Ver;
       
@@ -312,7 +323,7 @@ void ShowBroken(ostream &out,CacheFile &Cache,bool Now)
               out << ' ' << End.DepType() << ": ";
            FirstOr = false;
            
-           out << Start.TargetPkg().Name();
+           out << ShowPkg(Start.TargetPkg());
         
            // Show a quick summary of the version requirements
            if (Start.TargetVer() != 0)
@@ -374,7 +385,7 @@ void ShowNew(ostream &out,CacheFile &Cache)
    {
       pkgCache::PkgIterator I(Cache,Cache.List[J]);
       if (Cache[I].NewInstall() == true) {
-         List += string(I.Name()) + " ";
+         List += ShowPkg(I) + " ";
          VersionsList += string(Cache[I].CandVersion) + "\n";
       }
    }
@@ -397,9 +408,9 @@ void ShowDel(ostream &out,CacheFile &Cache)
       if (Cache[I].Delete() == true)
       {
         if ((Cache[I].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge)
-           List += string(I.Name()) + "* ";
+           List += ShowPkg(I) + "* ";
         else
-           List += string(I.Name()) + " ";
+           List += ShowPkg(I) + " ";
      
      VersionsList += string(Cache[I].CandVersion)+ "\n";
       }
@@ -424,7 +435,7 @@ void ShowKept(ostream &out,CacheFile &Cache)
          I->CurrentVer == 0 || Cache[I].Delete() == true)
         continue;
       
-      List += string(I.Name()) + " ";
+      List += ShowPkg(I) + " ";
       VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n";
    }
    ShowList(out,_("The following packages have been kept back:"),List,VersionsList);
@@ -445,7 +456,7 @@ void ShowUpgraded(ostream &out,CacheFile &Cache)
       if (Cache[I].Upgrade() == false || Cache[I].NewInstall() == true)
         continue;
       
-      List += string(I.Name()) + " ";
+      List += ShowPkg(I) + " ";
       VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n";
    }
    ShowList(out,_("The following packages will be upgraded:"),List,VersionsList);
@@ -466,7 +477,7 @@ bool ShowDowngraded(ostream &out,CacheFile &Cache)
       if (Cache[I].Downgrade() == false || Cache[I].NewInstall() == true)
         continue;
       
-      List += string(I.Name()) + " ";
+      List += ShowPkg(I) + " ";
       VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n";
    }
    return ShowList(out,_("The following packages will be DOWNGRADED:"),List,VersionsList);
@@ -484,7 +495,7 @@ bool ShowHold(ostream &out,CacheFile &Cache)
       pkgCache::PkgIterator I(Cache,Cache.List[J]);
       if (Cache[I].InstallVer != (pkgCache::Version *)I.CurrentVer() &&
           I->SelectedState == pkgCache::State::Hold) {
-         List += string(I.Name()) + " ";
+         List += ShowPkg(I) + " ";
                 VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n";
       }
    }
@@ -518,7 +529,7 @@ bool ShowEssential(ostream &out,CacheFile &Cache)
         if (Added[I->ID] == false)
         {
            Added[I->ID] = true;
-           List += string(I.Name()) + " ";
+           List += ShowPkg(I) + " ";
         //VersionsList += string(Cache[I].CurVersion) + "\n"; ???
         }
       }