]> git.saurik.com Git - apt.git/blobdiff - cmdline/apt-get.cc
merge patch from Daniel Hartwig to Show a error message if {,dist-}upgrade is used...
[apt.git] / cmdline / apt-get.cc
index 4e307b65737ef54bfd58aeb253b1650ebbb07b79..cce80ccfeac3200e9b1eacb557f16baa634a83b0 100644 (file)
@@ -1255,7 +1255,9 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true,
    {
       if (_config->FindB("APT::Get::Trivial-Only",false) == true)
         return _error->Error(_("Trivial Only specified but this is not a trivial operation."));
-      
+
+      // TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+      //             careful with hard to type or special characters (like non-breaking spaces)
       const char *Prompt = _("Yes, do as I say!");
       ioprintf(c2out,
               _("You are about to do something potentially harmful.\n"
@@ -1734,7 +1736,7 @@ bool DoAutomaticRemove(CacheFile &Cache)
         {
            if(Pkg.CurrentVer() != 0 && 
               Pkg->CurrentState != pkgCache::State::ConfigFiles)
-              Cache->MarkDelete(Pkg, purgePkgs);
+              Cache->MarkDelete(Pkg, purgePkgs, 0, false);
            else
               Cache->MarkKeep(Pkg, false, false);
         }
@@ -1748,7 +1750,7 @@ bool DoAutomaticRemove(CacheFile &Cache)
            {
               if (Pkg.CandVersion() != 0)
                  tooMuch.insert(Pkg);
-              Cache->MarkDelete(Pkg, false);
+              Cache->MarkDelete(Pkg, false, 0, false);
            }
            // only show stuff in the list that is not yet marked for removal
            else if(hideAutoRemove == false && Cache[Pkg].Delete() == false)
@@ -1785,7 +1787,7 @@ bool DoAutomaticRemove(CacheFile &Cache)
                    continue;
                 if (Debug == true)
                    std::clog << "Save " << Pkg << " as another installed garbage package depends on it" << std::endl;
-                Cache->MarkInstall(Pkg, false);
+                Cache->MarkInstall(Pkg, false, 0, false);
                 if (hideAutoRemove == false)
                    ++autoRemoveCount;
                 tooMuch.erase(Pkg);
@@ -1843,6 +1845,9 @@ bool DoAutomaticRemove(CacheFile &Cache)
    packages */
 bool DoUpgrade(CommandLine &CmdL)
 {
+   if (CmdL.FileSize() != 1)
+      return _error->Error(_("The upgrade command takes no arguments"));
+
    CacheFile Cache;
    if (Cache.OpenForInstall() == false || Cache.CheckDeps() == false)
       return false;
@@ -1910,7 +1915,6 @@ bool DoInstall(CommandLine &CmdL)
       return false;
    }
 
-   unsigned short const order[] = { MOD_REMOVE, MOD_INSTALL, 0 };
 
   TryToInstall InstallAction(Cache, Fix, BrokenFix);
   TryToRemove RemoveAction(Cache, Fix);
@@ -1918,6 +1922,7 @@ bool DoInstall(CommandLine &CmdL)
    // new scope for the ActionGroup
    {
       pkgDepCache::ActionGroup group(Cache);
+      unsigned short const order[] = { MOD_REMOVE, MOD_INSTALL, 0 };
 
       for (unsigned short i = 0; order[i] != 0; ++i)
       {
@@ -2021,7 +2026,7 @@ bool DoInstall(CommandLine &CmdL)
 
    /* Print out a list of suggested and recommended packages */
    {
-      string SuggestsList, RecommendsList, List;
+      string SuggestsList, RecommendsList;
       string SuggestsVersions, RecommendsVersions;
       for (unsigned J = 0; J < Cache->Head().PackageCount; J++)
       {
@@ -2176,6 +2181,9 @@ bool DoMarkAuto(CommandLine &CmdL)
 /* Intelligent upgrader that will install and remove packages at will */
 bool DoDistUpgrade(CommandLine &CmdL)
 {
+   if (CmdL.FileSize() != 1)
+      return _error->Error(_("The dist-upgrade command takes no arguments"));
+
    CacheFile Cache;
    if (Cache.OpenForInstall() == false || Cache.CheckDeps() == false)
       return false;
@@ -2393,7 +2401,7 @@ bool DoDownload(CommandLine &CmdL)
       HashString hash;
       if (rec.SHA512Hash() != "")
          hash = HashString("sha512", rec.SHA512Hash());
-      if (rec.SHA256Hash() != "")
+      else if (rec.SHA256Hash() != "")
          hash = HashString("sha256", rec.SHA256Hash());
       else if (rec.SHA1Hash() != "")
          hash = HashString("sha1", rec.SHA1Hash());
@@ -2553,15 +2561,12 @@ bool DoSource(CommandLine &CmdL)
         if(queued.find(Last->Index().ArchiveURI(I->Path)) != queued.end())
            continue;
         queued.insert(Last->Index().ArchiveURI(I->Path));
-           
+
         // check if we have a file with that md5 sum already localy
-        if(!I->MD5Hash.empty() && FileExists(flNotDir(I->Path)))  
+        if(!I->Hash.empty() && FileExists(flNotDir(I->Path)))  
         {
-           FileFd Fd(flNotDir(I->Path), FileFd::ReadOnly);
-           MD5Summation sum;
-           sum.AddFD(Fd.Fd(), Fd.Size());
-           Fd.Close();
-           if((string)sum.Result() == I->MD5Hash) 
+            HashString hash_string = HashString(I->Hash);
+            if(hash_string.VerifyFile(flNotDir(I->Path)))
            {
               ioprintf(c1out,_("Skipping already downloaded file '%s'\n"),
                        flNotDir(I->Path).c_str());
@@ -2570,7 +2575,7 @@ bool DoSource(CommandLine &CmdL)
         }
 
         new pkgAcqFile(&Fetcher,Last->Index().ArchiveURI(I->Path),
-                       I->MD5Hash,I->Size,
+                       I->Hash,I->Size,
                        Last->Index().SourceInfo(*Last,*I),Src);
       }
    }
@@ -2712,7 +2717,7 @@ bool DoSource(CommandLine &CmdL)
         {
            string buildopts = _config->Find("APT::Get::Host-Architecture");
            if (buildopts.empty() == false)
-              buildopts = "-a " + buildopts + " ";
+              buildopts = "-a" + buildopts + " ";
            buildopts.append(_config->Find("DPkg::Build-Options","-b -uc"));
 
            // Call dpkg-buildpackage