summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <egon@bottom>2007-06-09 01:44:03 +0200
committerMichael Vogt <egon@bottom>2007-06-09 01:44:03 +0200
commitf32484472374cb6c93fef0cd4ee9f71a7b80ec8a (patch)
treece174fb35ed7266a2d123c7bf8883463ab04d603
parent256f68abcf71157df78ab1aee08e46ff1b4f2b66 (diff)
parentfb2894d268d4821e0dd4f2b803ff2043b1ec3162 (diff)
* merged from apt--mvo
-rw-r--r--apt-pkg/depcache.cc10
-rw-r--r--apt-pkg/depcache.h2
-rw-r--r--cmdline/apt-get.cc20
-rwxr-xr-xcmdline/apt-mark1
-rw-r--r--methods/http.cc1
-rw-r--r--methods/http.h2
6 files changed, 26 insertions, 10 deletions
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc
index ac667d51d..fe981ea76 100644
--- a/apt-pkg/depcache.cc
+++ b/apt-pkg/depcache.cc
@@ -23,6 +23,8 @@
#include <sstream>
#include <set>
+#include <sys/stat.h>
+
#include <apti18n.h>
pkgDepCache::ActionGroup::ActionGroup(pkgDepCache &cache) :
@@ -176,7 +178,7 @@ bool pkgDepCache::readStateFile(OpProgress *Prog)
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;
@@ -238,6 +240,9 @@ bool pkgDepCache::writeStateFile(OpProgress *prog)
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;
@@ -250,8 +255,9 @@ bool pkgDepCache::writeStateFile(OpProgress *prog)
}
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());
+ chmod(state.c_str(), 0644);
return true;
}
diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h
index b2bcfb58a..84fed7f37 100644
--- a/apt-pkg/depcache.h
+++ b/apt-pkg/depcache.h
@@ -403,7 +403,7 @@ class pkgDepCache : protected pkgCache::Namespace
// read persistent states
bool readStateFile(OpProgress *prog);
- bool writeStateFile(OpProgress *prog);
+ bool writeStateFile(OpProgress *prog, bool InstalledOnly=false);
// Size queries
inline double UsrSize() {return iUsrSize;};
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc
index 1dcbbfc5b..554677f39 100644
--- a/cmdline/apt-get.cc
+++ b/cmdline/apt-get.cc
@@ -1535,7 +1535,7 @@ bool TryInstallTask(pkgDepCache &Cache, pkgProblemResolver &Fix,
buf[end-start] = 0x0;
if (regexec(&Pattern,buf,0,0,0) != 0)
continue;
- res &= TryToInstall(Pkg,Cache,Fix,false,BrokenFix,ExpectedInst);
+ res &= TryToInstall(Pkg,Cache,Fix,false,true,ExpectedInst);
found = true;
}
@@ -1595,6 +1595,18 @@ bool DoInstall(CommandLine &CmdL)
bool Remove = DefRemove;
char *VerTag = 0;
bool VerIsRel = false;
+
+ // this is a task!
+ if (Length >= 1 && S[Length - 1] == '^')
+ {
+ S[--Length] = 0;
+ // tasks must always be confirmed
+ ExpectedInst += 1000;
+ // see if we can install it
+ TryInstallTask(Cache, Fix, BrokenFix, ExpectedInst, S);
+ continue;
+ }
+
while (Cache->FindPkg(S).end() == true)
{
// Handle an optional end tag indicating what to do
@@ -1743,10 +1755,8 @@ bool DoInstall(CommandLine &CmdL)
return _error->Error(_("Broken packages"));
}
}
- if (_config->FindB("APT::Get::AutomaticRemove")) {
- if (!DoAutomaticRemove(Cache))
- return false;
- }
+ if (!DoAutomaticRemove(Cache))
+ return false;
/* Print out a list of packages that are going to be installed extra
to what the user asked */
diff --git a/cmdline/apt-mark b/cmdline/apt-mark
index dadc01366..fdc3e1856 100755
--- a/cmdline/apt-mark
+++ b/cmdline/apt-mark
@@ -62,3 +62,4 @@ if __name__ == "__main__":
# all done, rename the tmpfile
os.chmod(outfile.name, 0644)
os.rename(outfile.name, STATE_FILE)
+ os.chmod(outfile.name, 0644)
diff --git a/methods/http.cc b/methods/http.cc
index 5aefd4c1f..d9487be88 100644
--- a/methods/http.cc
+++ b/methods/http.cc
@@ -58,6 +58,7 @@ time_t HttpMethod::FailTime = 0;
unsigned long PipelineDepth = 10;
unsigned long TimeOut = 120;
bool Debug = false;
+URI Proxy;
unsigned long CircleBuf::BwReadLimit=0;
unsigned long CircleBuf::BwTickReadData=0;
diff --git a/methods/http.h b/methods/http.h
index 541e2952c..a6191e501 100644
--- a/methods/http.h
+++ b/methods/http.h
@@ -158,6 +158,4 @@ class HttpMethod : public pkgAcqMethod
};
};
-URI Proxy;
-
#endif