]> git.saurik.com Git - apt.git/commitdiff
* fix error in AutocleanInterval, closes: #319339
authorMichael Vogt <egon@bottom>
Fri, 8 Jun 2007 20:33:05 +0000 (22:33 +0200)
committerMichael Vogt <egon@bottom>
Fri, 8 Jun 2007 20:33:05 +0000 (22:33 +0200)
  (thanks to Israel G. Lugo for the patch)
* add "purge" commandline argument, closes: #133421)
  (thanks to Julien Danjou for the patch)

1  2 
cmdline/apt-get.cc
debian/apt.cron.daily
debian/changelog
doc/apt-get.8.xml

index aa6a70ffe04edb08c53b2d4237a0a14966584927,c79c1559e14cf7770060555e4ebad4a6dadae475..74824b6b05e91e7f2cb10791db66a5f53d940de2
@@@ -1569,116 -1428,98 +1569,120 @@@ bool DoInstall(CommandLine &CmdL
     bool DefRemove = false;
     if (strcasecmp(CmdL.FileList[0],"remove") == 0)
        DefRemove = true;
 -   for (const char **I = CmdL.FileList + 1; *I != 0; I++)
+    else if (strcasecmp(CmdL.FileList[0], "purge") == 0)
+    {
+       _config->Set("APT::Get::Purge", true);
+       DefRemove = true;
+    }
 +   else if (strcasecmp(CmdL.FileList[0], "autoremove") == 0)
     {
 -      // Duplicate the string
 -      unsigned int Length = strlen(*I);
 -      char S[300];
 -      if (Length >= sizeof(S))
 -       continue;
 -      strcpy(S,*I);
 -      
 -      // See if we are removing and special indicators..
 -      bool Remove = DefRemove;
 -      char *VerTag = 0;
 -      bool VerIsRel = false;
 -      while (Cache->FindPkg(S).end() == true)
 +      _config->Set("APT::Get::AutomaticRemove", "true");
 +      DefRemove = true;
 +   }
 +   // new scope for the ActionGroup
 +   {
 +      pkgDepCache::ActionGroup group(Cache);
 +      for (const char **I = CmdL.FileList + 1; *I != 0; I++)
        {
 -       // Handle an optional end tag indicating what to do
 -       if (Length >= 1 && S[Length - 1] == '-')
 -       {
 -          Remove = true;
 -          S[--Length] = 0;
 +       // Duplicate the string
 +       unsigned int Length = strlen(*I);
 +       char S[300];
 +       if (Length >= sizeof(S))
            continue;
 -       }
 -       
 -       if (Length >= 1 && S[Length - 1] == '+')
 +       strcpy(S,*I);
 +      
 +       // See if we are removing and special indicators..
 +       bool Remove = DefRemove;
 +       char *VerTag = 0;
 +       bool VerIsRel = false;
 +       while (Cache->FindPkg(S).end() == true)
         {
 -          Remove = false;
 -          S[--Length] = 0;
 -          continue;
 -       }
 +          // Handle an optional end tag indicating what to do
 +          if (Length >= 1 && S[Length - 1] == '-')
 +          {
 +             Remove = true;
 +             S[--Length] = 0;
 +             continue;
 +          }
         
 -       char *Slash = strchr(S,'=');
 -       if (Slash != 0)
 -       {
 -          VerIsRel = false;
 -          *Slash = 0;
 -          VerTag = Slash + 1;
 -       }
 +          if (Length >= 1 && S[Length - 1] == '+')
 +          {
 +             Remove = false;
 +             S[--Length] = 0;
 +             continue;
 +          }
         
 -       Slash = strchr(S,'/');
 -       if (Slash != 0)
 -       {
 -          VerIsRel = true;
 -          *Slash = 0;
 -          VerTag = Slash + 1;
 -       }
 +          char *Slash = strchr(S,'=');
 +          if (Slash != 0)
 +          {
 +             VerIsRel = false;
 +             *Slash = 0;
 +             VerTag = Slash + 1;
 +          }
         
 -       break;
 -      }
 +          Slash = strchr(S,'/');
 +          if (Slash != 0)
 +          {
 +             VerIsRel = true;
 +             *Slash = 0;
 +             VerTag = Slash + 1;
 +          }
 +       
 +          break;
 +       }
        
 -      // Locate the package
 -      pkgCache::PkgIterator Pkg = Cache->FindPkg(S);
 -      Packages++;
 -      if (Pkg.end() == true)
 -      {
 -       // Check if the name is a regex
 -       const char *I;
 -       for (I = S; *I != 0; I++)
 -          if (*I == '?' || *I == '*' || *I == '|' ||
 -              *I == '[' || *I == '^' || *I == '$')
 -             break;
 -       if (*I == 0)
 -          return _error->Error(_("Couldn't find package %s"),S);
 +       // Locate the package
 +       pkgCache::PkgIterator Pkg = Cache->FindPkg(S);
 +       Packages++;
 +       if (Pkg.end() == true)
 +       {
 +          // Check if the name is a regex
 +          const char *I;
 +          for (I = S; *I != 0; I++)
 +             if (*I == '?' || *I == '*' || *I == '|' ||
 +                 *I == '[' || *I == '^' || *I == '$')
 +                break;
 +          if (*I == 0)
 +             return _error->Error(_("Couldn't find package %s"),S);
  
 -       // Regexs must always be confirmed
 -       ExpectedInst += 1000;
 +          // Regexs must always be confirmed
 +          ExpectedInst += 1000;
         
 -       // Compile the regex pattern
 -       regex_t Pattern;
 -       int Res;
 -       if ((Res = regcomp(&Pattern,S,REG_EXTENDED | REG_ICASE |
 -                   REG_NOSUB)) != 0)
 -       {
 -          char Error[300];        
 -          regerror(Res,&Pattern,Error,sizeof(Error));
 -          return _error->Error(_("Regex compilation error - %s"),Error);
 -       }
 +          // Compile the regex pattern
 +          regex_t Pattern;
 +          int Res;
 +          if ((Res = regcomp(&Pattern,S,REG_EXTENDED | REG_ICASE |
 +                             REG_NOSUB)) != 0)
 +          {
 +             char Error[300];     
 +             regerror(Res,&Pattern,Error,sizeof(Error));
 +             return _error->Error(_("Regex compilation error - %s"),Error);
 +          }
         
 -       // Run over the matches
 -       bool Hit = false;
 -       for (Pkg = Cache->PkgBegin(); Pkg.end() == false; Pkg++)
 -       {
 -          if (regexec(&Pattern,Pkg.Name(),0,0,0) != 0)
 -             continue;
 +          // Run over the matches
 +          bool Hit = false;
 +          for (Pkg = Cache->PkgBegin(); Pkg.end() == false; Pkg++)
 +          {
 +             if (regexec(&Pattern,Pkg.Name(),0,0,0) != 0)
 +                continue;
            
 -          ioprintf(c1out,_("Note, selecting %s for regex '%s'\n"),
 -                   Pkg.Name(),S);
 +             ioprintf(c1out,_("Note, selecting %s for regex '%s'\n"),
 +                      Pkg.Name(),S);
            
 +             if (VerTag != 0)
 +                if (TryToChangeVer(Pkg,Cache,VerTag,VerIsRel) == false)
 +                   return false;
 +          
 +             Hit |= TryToInstall(Pkg,Cache,Fix,Remove,BrokenFix,
 +                                 ExpectedInst,false);
 +          }
 +          regfree(&Pattern);
 +       
 +          if (Hit == false)
 +             return _error->Error(_("Couldn't find package %s"),S);
 +       }
 +       else
 +       {
            if (VerTag != 0)
               if (TryToChangeVer(Pkg,Cache,VerTag,VerIsRel) == false)
                  return false;
index b4cbf1c8a901010d5c51c9d2e0a7a6e0e7c6fe93,4d6bf5842f0394aab8747a069694b1a9b4a81b9c..778e3cefefb9da48091f95aae9d6db9e91b18b83
@@@ -152,12 -146,8 +152,12 @@@ UpdateInterval=
  DownloadUpgradeableInterval=0
  eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
  AutocleanInterval=$DownloadUpgradeableInterval
- eval $(apt-config shell AutocleanInterval APT::Periodic::Autoclean)
+ eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval)
  
 +UnattendedUpgradeInterval=0
 +eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade)
 +
 +
  # laptop check, on_ac_power returns:
  #       0 (true)    System is on mains power
  #       1 (false)   System is not on mains power
index a57cf4577cf2bad37bb821cac0f0698e9bf2cd25,2dc11190dbf3dc2593bb599d6caa99dbfddef8f8..2504df8ce204d35dfe5840e2d97ce13f75c436d2
@@@ -1,33 -1,5 +1,37 @@@
 -apt (0.6.47) UNRELEASED; urgency=low
 +apt (0.7.2) unstable; urgency=low
 +  
 +  * merged the debian/experimental changes back
 +    into the debian/sid branch
 +  * merged from Christian Perrier:
 +    * mr.po: New Marathi translation  Closes: #416806
 +    * zh_CN.po: Updated by Eric Pareja  Closes: #416822
 +    * tl.po: Updated by Eric Pareja   Closes: #416638
 +    * gl.po: Updated by Jacobo Tarrio
 +           Closes: #412828
 +    * da.po: Updated by Claus Hindsgaul
 +           Closes: #409483
 +    * fr.po: Remove a non-breakable space for usability
 +           issues. Closes: #408877
 +    * ru.po: Updated Russian translation. Closes: #405476
 +    * *.po: Unfuzzy after upstream typo corrections
 +  * buildlib/archtable:
 +    - added support for sh3/sh4 (closes: #424870)
 +    - added support for m32r (closes: #394096)
 +  * buildlib/systemtable:
 +    - added support for lpia
 +  * configure.in:
 +    - check systemtable for architecture mapping too
++  * fix error in AutocleanInterval, closes: #319339
++    (thanks to Israel G. Lugo for the patch)
++  * add "purge" commandline argument, closes: #133421)
++    (thanks to Julien Danjou for the patch)
 +  
 + -- Michael Vogt <mvo@debian.org>  Wed, 06 Jun 2007 23:19:50 +0200
 +
 +apt (0.7.1) experimental; urgency=low
  
 +  * ABI library name change because its build against
 +    new glibc
    * implement SourceVer() in pkgRecords 
       (thanks to Daniel Burrows for the patch!)
    * apt-pkg/algorithm.cc:
Simple merge