]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/depcache.cc
* merged from main
[apt.git] / apt-pkg / depcache.cc
index ac667d51d6f3931c69306ba82d31b91203d71c79..ca9636cc1cb0d3d966bec2763603013d4269cd53 100644 (file)
@@ -23,6 +23,8 @@
 #include <sstream>    
 #include <set>
 
 #include <sstream>    
 #include <set>
 
+#include <sys/stat.h>
+
 #include <apti18n.h>    
 
 pkgDepCache::ActionGroup::ActionGroup(pkgDepCache &cache) :
 #include <apti18n.h>    
 
 pkgDepCache::ActionGroup::ActionGroup(pkgDepCache &cache) :
@@ -176,7 +178,7 @@ bool pkgDepCache::readStateFile(OpProgress *Prog)
    return true;
 }
 
    return true;
 }
 
-bool pkgDepCache::writeStateFile(OpProgress *prog)
+bool pkgDepCache::writeStateFile(OpProgress *prog, bool InstalledOnly)
 {
    if(_config->FindB("Debug::pkgAutoRemove",false))
       std::clog << "pkgDepCache::writeStateFile()" << std::endl;
 {
    if(_config->FindB("Debug::pkgAutoRemove",false))
       std::clog << "pkgDepCache::writeStateFile()" << std::endl;
@@ -238,6 +240,9 @@ bool pkgDepCache::writeStateFile(OpProgress *prog)
               std::clog << "Skipping already written " << pkg.Name() << std::endl;
            continue;
         }
               std::clog << "Skipping already written " << pkg.Name() << std::endl;
            continue;
         }
+         // skip not installed ones if requested
+         if(InstalledOnly && pkg->CurrentVer == 0)
+            continue;
         if(_config->FindB("Debug::pkgAutoRemove",false))
            std::clog << "Writing new AutoInstall: " 
                      << pkg.Name() << std::endl;
         if(_config->FindB("Debug::pkgAutoRemove",false))
            std::clog << "Writing new AutoInstall: " 
                      << pkg.Name() << std::endl;
@@ -250,8 +255,9 @@ bool pkgDepCache::writeStateFile(OpProgress *prog)
    }
    fclose(OutFile);
 
    }
    fclose(OutFile);
 
-   // move the outfile over the real file
+   // move the outfile over the real file and set permissions
    rename(outfile.c_str(), state.c_str());
    rename(outfile.c_str(), state.c_str());
+   chmod(state.c_str(), 0644);
 
    return true;
 }
 
    return true;
 }
@@ -1144,7 +1150,7 @@ bool pkgDepCache::Policy::IsImportantDep(DepIterator Dep)
       string s = _config->Find("APT::Install-Recommends-Section","");
       if(s.size() > 0) 
       {
       string s = _config->Find("APT::Install-Recommends-Section","");
       if(s.size() > 0) 
       {
-        const char *sec = Dep.TargetPkg().Section();
+        const char *sec = Dep.ParentVer().Section();
         if (sec && strcmp(sec, s.c_str()) == 0)
            return true;
       }
         if (sec && strcmp(sec, s.c_str()) == 0)
            return true;
       }
@@ -1372,3 +1378,4 @@ bool pkgDepCache::Sweep()
 
    return true;
 }
 
    return true;
 }
+